如何$在Angular中观看多个收藏
How to $watch more than one collection in Angular?
我的应用程序中有两个数组,我想观察变化:
$scope.a = [{id: 1, text: 'test a - 1'}, ...];
$scope.b = [{id: 1, text: 'test b - 1'}, ...];
function changed(){
// notify application about changes in a or b
}
当a
或b
发生更改时,我必须调用changed()
函数。
$scope.$watchCollection('a', changed);
$scope.$watchCollection('b', changed);
如果我在a
和b
以及初始化步骤中有更改,changed()
回调将被触发两次。我想把两块手表合为一块,大概是这样的:
$scope.$watchCollection('a, b', changed);
如何使用Angular完成此操作?
有一种叫做watchGroup
的东西可以用于此目的,但不幸的是,它大多是无用的,因为它只做浅表。
你可以使用观察者函数返回你的对象
$scope.$watch(function(){ //Or even try this with watchCollection
return ['a','b'].map(angular.bind($scope, $scope.$eval));
}, function(newV){
console.log(newV);
},true);
相反,正如我在另一个答案中提到的那样,您可以创建一个自定义观察程序,并执行类似的操作。
$scope.deepWatchGroup(['a','b'],function(newV){
console.log(newV);
});
使用$scope. $watch('a+b', change)
。您可以添加任意数量的变量来观看
相关文章:
- 使用HTML5 localStorage和jQuery添加到收藏夹/书签
- 连接流星中的两个收藏(帖子评论)
- 如何从网站获得apple touch图标,如果没有;不存在,则显示收藏夹
- 在玉石模板中显示Mongodb收藏
- 如何获得Backbone.js收藏集只存在于内存中(未持久化)
- Jquery脚本删除表单中的所有项目'的收藏
- 限制收藏-.first-dons'无法使用CompositeViews
- "停止运行脚本错误“;在IE8中拥有大量收藏
- 添加到Safari中的收藏夹/书签栏(CMD+D)
- 角度添加到收藏夹
- Backbone.js加入收藏
- 如何重新运行Meteor出版物以刷新客户端上收藏的内容
- 如何将空白选项添加到木偶收藏视图生成的选择中
- 正在整理流星收藏
- 当你在流星收藏前使用它时,@是什么意思
- 流星收藏未被转换
- 单击复选框时将此元素添加到收藏夹数组 + 后 Ajax 元素关系
- 保持两个流星收藏同步
- 仅重新渲染木偶.js收藏视图的更改部分
- HTML - 添加和删除收藏夹