如何将PHP变量传递给AngularJS配置

时间:2016-01-17 00:14:16

标签: javascript php angularjs

假设我有一个HTML文件,其中使用了'ngRoute'加载了AngularJS。

然后我通过制作一个index.php文件来初始化应用程序(我没有显示基本HTML标记+此处包含角度JS):

<?php $path = 'www.test.com' ?>

<div ng-app="testApp" ng-init="path='<?php echo $path ?>">
   <div ng-view></div>    
</div>

我正在尝试将PHP变量传递给我的AngularJS App Config:

// Module
var test = angular.module('testApp', ['ngRoute']);

// Routes
test.config(function($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl: $rootScope.path + '/pages/display.htm',
        controller:  'testController'
    }) 
});


// Controllers
test.controller('testController', ['$scope', function($scope) {

}]);

这不起作用,因为$rootScope没有定义。谁能告诉我我在这里失踪了什么?

3 个答案:

答案 0 :(得分:3)

基于关于想要保持php和脚本分开的注释,只需添加一个脚本标记,其中包含一个变量,然后您可以从角度

的任何位置访问该变量
<script>
     var myPathVar = '<?= $someVar; ?>';
</script>

然后你可以在内部角度做任何你想要的事情,比如将它添加为常量,将它传递给配置中的$ rootScope或其他

答案 1 :(得分:2)

您可以在使用PHP生成的页面中的脚本标记中定义常量:

<script type="text/javascript">
    angular.module('testApp').constant('path', '<?php echo $path ?>');
</script>

在您的应用配置中:

// Routes
test.config(function($routeProvider, path) {
    $routeProvider
    .when('/', {
        templateUrl: path + '/pages/display.htm',
        controller:  'testController'
    }) 
});

如果path包含任何用户提供的内容,请确保将其正确转义以便以javascript字符串形式回显。

答案 2 :(得分:-1)

你可能想要这样做

// Controllers
test.controller('testController', ['<?php echo $scope; ?>', function($scope) {

}]);

我不使用angularJs,但无论'$scope'是否真的是单词$scope