在angular中运行PHP
我正在使用angular在wordpress网站中创建页面过渡。我的网站加载了一个普通的wordpress页面,该页面触发了PHP,并在页面中填充了有角元素(正文)。然后,角度元素使用动画过渡以3个单独的html页面更改正文内容(因此页眉和页脚不受影响。)
我在单独的html页面中有PHP。我以为PHP会在每个页面进入视图之前触发-但是我猜是因为页面是由angular而不是浏览器加载的,这不会发生吗?
<div id="pageone">    <p>This is page 1.</p>
    <a href="#page2">Go to page 2 </a><br>
    <?php echo ('this php does not work'); ?>
    <p>This html is below php</p>
</div>
尽管我使用页面,但相同的概念也适用于被引入的div。无论如何,在初始页面加载后使用angular触发了PHP?这有可能吗?
回答:
AngularJS完全是客户端。您可以将PHP放入HTML模板中,但是如果您未将网络服务器配置为将HTML文件解析为PHP,那么您的PHP甚至都不会被解析。
即使这样做,AngularJS也会缓存这些模板,因此它将仅在服务器上“运行”一次。这意味着,如果交换出所涉及的模板,然后在该模板所使用的服务器上更改数据,然后又将其交换回去,则对数据的更新将不会反映在模板中,因为绝对为零这些更新发生在Angular方面。
像@
Jonast92这样的好主意是在他的评论中说,不要将客户端和服务器端的问题混合在一起,并在它们之间进行严格的分隔。在角度应用程序的模板中使用角度模型。而不是这样的:
<p><?php echo $item->description; ?></p>使用角度模型:
<p>{{ item.description }}</p>如果您需要来自服务器的数据来执行此操作,请使Angular服务出去并为您获取数据:
angular.module('app').controller('controller', [    '$scope', 'ItemManager',
    function($scope, ItemManager) {
        $scope.item = null;
        ItemManager.getItem('item-id').then(
            function(item)  {
                $scope.item = item;
            }, function() {
                console.log('load item failed');
            }
        );
    }
]);
angular.module('app').service('ItemManager', [
    '$http', '$q',
    function($http, $q) {
        var svc = {
            getItem: getItem
        };
        return svc;
        function getItem(id) {
             var defer = $q.defer();
             $http.get('/items/' + id)
                 .success(function(data) {
                     defer.resolve(data);
                 })
                 .error(function() {
                     defer.reject();
                 })
             ;
             return defer.promise;
        }
    }
]);
以上是 在angular中运行PHP 的全部内容, 来源链接: utcz.com/qa/400505.html






