当我需要定义$ rootScope变量值时,我在使用print(NumberPlates)
TimestakenForeign = {}
for key,value in zip(NumberPlates,Timestaken2):
TimestakenForeign[key]=value
print(TimestakenForeign)
print("10 cars have passed Camera A, then Camera B\n")
for key,value in TimestakenForeign.items():
speed=distance/int(value)
if speed>speedlimit:
print(key,"is speeding with",speed,"mps")
时遇到了麻烦。
该过程包括两个主要阶段。
controller as
内的$ rootScope上定义他的个人数据(如姓名和身份证)。LoginController
上设置$rootScope
值; 但问题是,由于我对这种类型的语法不熟悉(使用'控制器作为'使用vm attr),.run
未被定义,也未被$rootScope
访问图。
这就是我正在做的事情:
angular
.module('agApp')
.run(runAuth);
/* @ngInject */
function runAuth($rootScope,factAuth,localStorageService) {
var user = JSON.parse(localStorageService.get("user"));
if (user.length > 0) {
$rootScope.userData = user[0];
}
$rootScope.logOut = function() {
factAuth.logOut();
$rootScope.userData = '';
$state.go('login');
};
}; //end run
angular
.module('agApp')
.controller('LoginController', LoginController);
/* @ngInject */
function LoginController($rootScope,$http,$state,localStorageService,factAutenticacao) {
var vm = this;
vm.pageName = 'Login page';
vm.loginProccess = loginProccess;
function loginProccess(event) {
//here i get an $htt to validate the login
if (!data) {
alert('login failed')
} else {
factAutenticacao.loginProcess();
localStorageService.set("user", JSON.stringify(data[0]));
$rootScope.userData = data[0];
$state.go('app');
};
};
}; //end login controller
顺便说一句,在定义全局函数时也会出现同样的问题,比如“logOut”。功能
在我看来,我试图像这样访问这些数据:
<div class="col-l-12">
<h3>User: {{::vm.userData.name}}</h3>
<ul>
<li> {{::vm.userData.id}}</li>
<li> {{::vm.userData.location}}</li>
[.. more code ..]
</ul>
</div>
由于它是全局变量,我不想将其与特定controller
相关联,因为它需要在整个应用中可访问。
有什么问题?
答案 0 :(得分:1)
视图使用vm.userData
,其中vm
是控制器本身。因此,如果您希望这样做,userData必须是控制器的字段,而不是根范围的字段:
vm.userData = data[0];
而不是
$rootScope.userData = data[0];
或者,如果你真的想在$ rootScope上存储它,那么视图应该使用
{{ userData.name }}
从控制器范围获取userData,并通过继承从根范围获取。
我同意这些意见:不应该在根范围内。它应该在专用服务中,注入任何控制器需要访问用户数据。