当前位置: 首页 > 面试题库 >

在angular中运行PHP

关浩壤
2023-03-14
问题内容

我正在使用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;
        }
    }
]);


 类似资料:
  • 问题内容: 我已经创建了一个Docker映像来测试Angular应用程序,但是无法从主机连接到Docker容器中正在运行的应用程序。 该映像是使用具有以下内容的Dockerfile创建的:EXPOSE 4200 8080 80 我使用以下命令运行docker容器:docker run -ti -p 4200:4200 angulardev / bin / bash 在容器内,我创建Angular应

  • 如何建立角度 在使用TypeScript编写Angular应用程序后,我们使用Angular CLI命令构建应用程序。 命令将应用程序编译到一个输出目录中,构建构件将存储在目录中。 这篇文章说Angular有两个编译器: > 视图编译器 模块编译器 > 当使用类(在main.ts中)进行引导时,Angular在中查找,找到它,实例化AppComponent的实例,并在标记中呈现它。 当用户在应用程

  • 我是新来的角度。我已经在aws中的docker容器中部署了一个角度应用程序。应用程序需要连接到aws s3 bucket。我不需要硬编码aws键,所以我在docker中设置了一个环境变量。angular被部署为ngbuild中的dist文件夹由nginx docker容器提供服务。 一旦dist文件夹中的内容被送达服务器,是否可以通过角度读取服务器环境变量?就像php和nodejs中的env函数一

  • 问题内容: 我们使用Selenium WebDriver来自动化基于UI的测试。我们的挑战之一是检测页面何时真正完成加载,而Angular 1在这方面也是一个挑战。我们最终执行了这段代码,专门用于检测Angular 1是否完成: 我们正在测试的应用程序最近已切换为使用Angular2。上面的代码段不等待Angular 2完成。有什么建议? 问题答案: 如果是Angular 2,则应等待 所有Ang

  • 这就是输出: 问题是karma无法启动chrome浏览器。我认为这个问题会发生在任何码头工人的环境中。如何在bitbucket管道中运行测试?

  • Hi我正在使用xslt转换器和xsl文件,我正在使用函数ex: date-time(),它在Anypoint Studio中运行,但当我尝试在cloud dHub中运行时,它会抛出错误 无法找到名为{http://exslt.org/dates-and-times}date-time()的匹配0参数函数。没有本地名称date-time的Saxon扩展函数(net.sf.saxon.trans.XP