javascript - $scope.$on 事件后 $broadcast 后 Angular 范围未更新

标签 javascript angularjs scope

在我的 Controller 中,我设置了一个名为 diffDatascope 变量,如下所示:

$scope.diffData = $scope.diffSync.data;

在我看来,我绑定(bind)到 diffData 的 num 属性,如下所示:

<div class="sync-data"> num = {{diffData.num ? diffData.num : 0}}<div>

当我收到 $broadcast 事件新同步数据时,我将旧的 diffData 替换为具有更新后的 num 的新数据,如下所示:

$scope.$on('new synced data', function(event, data) {
    console.log('new synced data event', data);
    $scope.diffData = data;
});

问题是新的 num 没有在 View 中更新。我该如何解决这个问题?

最佳答案

您尝试过$scope.$apply吗?使用 $scope.$apply 更改作用域变量。

$scope.$on('new synced data', function(event, data) {
    console.log('new synced data event', data);
    $scope.$apply(function(){
        $scope.diffData = data;
    });
});

关于javascript - $scope.$on 事件后 $broadcast 后 Angular 范围未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36565353/

相关文章:

addEventListener 匿名函数中的 Javascript 变量范围

javascript - 在悬停时切换类?

javascript - 类似 jQuery 库的模式

javascript - $rootScope.$on 多次调用

angularjs - ui-router 默认子状态不起作用

javascript - 如何构造 javascript 回调以便正确维护函数范围

scope - Angular dart 子组件范围

javascript - 需要 JS 和 LESS

javascript - 如何在backbone.js中为事件编写单元测试

javascript - 如何在屏幕顶部显示工具提示