在我的控制器中,我设置了一个名为scope
的{{1}}变量,如下所示:
diffData
在我看来,我这样绑定$scope.diffData = $scope.diffSync.data;
的num属性:
diffData
当我收到<div class="sync-data"> num = {{diffData.num ? diffData.num : 0}}<div>
事件$broadcast
时,我将旧的new synced data
替换为具有更新数量的新数据,如下所示:
diffData
问题是新的$scope.$on('new synced data', function(event, data) {
console.log('new synced data event', data);
$scope.diffData = data;
});
未在视图中更新。我该如何解决这个问题?
答案 0 :(得分:1)
您是否尝试过$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;
});
});
答案 1 :(得分:1)
通常,当Angular中未应用更改时,您可以调用
$scope.$apply(function() {
// change vars here
})
虽然我更喜欢较短的解决方案:
// change vars
$scope.foo = 'bar';
$scope.$applyAsync();
这允许Angular在可能的情况下应用更改,并且不会与对$apply()
的其他调用冲突