2014-10-29 155 views
0

我想在我的angularjs项目中设置一个根作用域,这样我就可以从HTML中的任何地方(而不是在ng视图中)访问名称。访问全局变量

<!DOCTYPE html> 
<html lang="en" ng-app="phonecatApp" ng-controller="ApplicationController"> 

</html> 

封装整个页面

我在一个js文件加载在以下称为app.js;

var phonecatApp = angular.module('phonecatApp', []); 
phonecatApp.factory('UserService', function(){ 
    return { 
     name : 'Tom' 
    }; 
}) 

function ApplicationController($scope, UserService){ 
    $scope.username = UserService.name 
} 

和我想要做的index.html中的以下内容:

<a href="#index" class="nav-item name_p_nav">{{username}}</a> 

,但它只是回来空白

编辑:固定错字

+1

错字?函数ApplicationController($范围,用户名)应该是函数ApplicationController($ scope,UserService){ – sma 2014-10-29 16:30:00

+0

对不起,这是一个错字,但不会改变问题 – TMB87 2014-10-29 16:31:55

+0

您是否注册与模块的控制器? 'phonecatApp.controller(“ApplicationController”,[“$ scope”,“UserService”,ApplicationController]);' – Absor 2014-10-29 16:32:29

回答

0

你可以试试像这样的东西。改变你声明控制器的方式。为了使用$ scope变量,你必须声明它,可能你应该接收脚本错误,因为它没有声明,请使用开发人员工具在浏览器中检查确切的错误。

phonecatApp.controller('ApplicationController',['$scope',function ($scope){ 
$scope.username = UserService.name 

}]);

+0

我没有收到任何错误,这是奇怪的位 – TMB87 2014-10-29 16:39:33

+0

我试着改变我的代码到上面但仍然没有回来,没有错误 – TMB87 2014-10-29 16:41:16

0

我试图重现问题,我很快创建了一个应用程序,它为我工作!在这里,我张贴我的示例代码,只是看看相同的。

<html lang="en" ng-app="phonecatApp" ng-controller="ApplicationController"> 
<head> 
    <script src="../Scripts/lib/angular.min.js"></script> 
    <script src="../Scripts/Application1.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js"></script> 
</head> 
<body> 
    <a href="#index" class="nav-item name_p_nav">{{username}}</a> 
</body> 

脚本:

var phonecatApp = angular.module('phonecatApp', []); 
phonecatApp.factory('UserService', function(){ 
return { 
     name : 'Tom' 
}; 
}) 

function ApplicationController($scope, UserService){ 
$scope.username = UserService.name 
} 
+0

是不是我的代码相同? – TMB87 2014-10-29 17:07:47