我有一个角度应用,需要连接到服务器并在检索数据之前从中进行授权
问题是{{}}
范围没有显示从服务器检索的更新数据。
我有类似
的东西.controller('Ctrl', function($scope, $rootScope) {
'use strict';
$scope.signIn = function() {
// Authenticate (takes a bout 2 second to get the data back
server1.authenticate(uame, pd, function(data){
//parse data
$scope.data = data
}
$scope.$broadcast('sData', $scope);
}
})
.controller('mCtrl', function($scope, $rootScope) {
'use strict';
$scope.test='old test';
$scope.$on('sData', function(event, nData){
$scope.test=nData.test //show 'new test' as a string
})
})
HTML
<div ng-click='signIn'>click me</div>
{{test}} //shows 'old test' when first load. but not showing 'new test' after user click the div.
任何人都可以帮我吗?非常感谢!
答案 0 :(得分:2)
这来自文档:http://docs.angularjs.org/api/ng/type/ $ rootScope.Scope
这可能是由于已经发生的摘要。我会使用:
$scope.$apply()
//or better
//use the scope returned in the listener
$scope.$on('sData', function(event, nData){
event.currentScope.test = nData.test //show 'new test' as a string
})
$ on(姓名,听众); 侦听给定类型的事件。有关事件生命周期的讨论,请参阅$ emit。
事件监听器函数格式为: function(event,args ...)。传递给侦听器的事件对象具有以下属性:
targetScope - {范围}:事件为$ emit-ed或$ broadcast-ed的范围。
currentScope - {范围}:处理事件的当前范围。
名称 - {string}:活动名称。
stopPropagation - {function =}:调用stopPropagation函数将取消进一步的事件 传播(仅适用于$ emit-ed的事件)。 preventDefault - {function}:调用preventDefault将defaultPrevented标志设置为true。
defaultPrevented - {boolean}:如果调用了preventDefault,则为true。