javascript - 就我而言,如何在运行时填充数据?

标签 javascript angularjs angularjs-scope

我有一个 Angular 应用程序需要连接到服务器并在我们检索数据之前从他们那里授权 问题是 {{}} 范围不显示从服务器检索的更新数据。

我有类似的东西

.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.

谁能帮我解决这个问题?非常感谢!

最佳答案

这来自文档:http://docs.angularjs.org/api/ng/type/ $rootScope.作用域

这可能是因为摘要已经发生了。我要么使用:

$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 - {Scope}:事件被 $emit-ed 或 $broadcast-ed 的范围。

currentScope - {Scope}:处理事件的当前作用域。

name - {string}:事件名称。

stopPropagation - {function=}:调用 stopPropagation 函数将取消进一步的事件 传播(仅适用于 $emit-ed 的事件)。 preventDefault - {function}:调用 preventDefault 将 defaultPrevented 标志设置为 true。

defaultPrevented - {boolean}:如果调用了 preventDefault,则为真。

关于javascript - 就我而言,如何在运行时填充数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22724324/

相关文章:

javascript - 子 visibility 影响父 visibility

javascript - 使用两个 jQuery 事件方法执行同一组功能

angularjs - 使用 angularjs 单击浏览器后退按钮时,我可以保留模型值吗?

javascript - AngularJS 无法工作

angularjs - UI 路由器,在服务中使用 stateparams

angularjs - 如何从自定义验证指令设置 ng-model 变量

JavaScript 字符串限制?

javascript - 按 Enter 按钮后 Jquery 不改变文本颜色

javascript - 为什么我的 Angular 范围变量未定义?

javascript - AngularJS 范围未定义