假设我有一个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
没有定义。谁能告诉我我在这里失踪了什么?
答案 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