有没有一种方法可以使用anagular来监视不在作用域中而是在服务中的一组变量?
Is there a way to watch a group of variables not in scope but in service using anagular?
例如,给定以下来自服务
的数据myService.var1
myService.var2
myService.var3
通常您需要执行以下操作
$scope.$watch(function(){
return myService.var1
}, function(newValue, oldValue) {
})
$scope.$watch(function(){
return myService.var2
}, function(newValue, oldValue) {
})
但是我想一次看到变量列表
我尝试了以下方法,但每个都有自己的问题。
// Max digest cycle iteration error
$scope.$watch(function(){
return {
var1: myService.var1,
var2: myService.var2
}
}, function(newValue, oldValue) {
})
和
$scope.myVar1 = myService.var1
$scope.myVar2 = myService.var2
// this doesn't actually watch the service variable
$scope.$watchGroup(['myVar1', 'myVar2'], function(newValue, oldValue) {
})
谁能给我指个方向吗? 修复max digest。
这是因为每次摘要迭代都会创建一个新的对象实例。
让我们来修复它:
var watched = {
var1: myService.var1,
var2: myService.var2
};
$scope.$watch(function(){
return watched;
// return angular.toJson(watched); // serialized can be better
}, function(newValue, oldValue) {
});
你的$watchGroup
将不工作,因为你正在监视变量的副本,而不是原始的。
在接下来的修复中,我们几乎回到了之前的解决方案:
$scope.vars = {var1: myService.var1, var2: myService.var2};
$scope.$watchGroup(['vars'], function(newValue, oldValue) {
});
相关文章:
- fluxxor向一个flux实例添加一组以上的操作
- 我们怎样才能将内含子J用于一组特定的元素
- 使用linq.js按当前日期订购一组momentjs日期
- 正则表达式,从一组关键字中获取奇数
- 创建一组元素JointJS
- 如何在javascript中获取一组复选框值
- 一组(共组..)
- 使用JS将页面中的每个字母设置为随机颜色.为什么在页面的每个打开标记之前总是有一组额外的span标记
- 在一组复选框中,一次只允许选择一个
- 为什么在fabricjs中可选择的不适用于一组圆
- 如何在不刷新页面的情况下每次单击一组选项卡时刷新视图内容窗格
- 从一组具有相同起始和结束的所有段落的段落中提取包含特定字符串的段落
- 简单的Javascript文本编辑器或一组函数
- 基于日期范围的一组日期范围内的天数
- 处理对象数组并将它们以 4 个为一组进行分配
- 如何在 Javascript 中用一组字符拆分子字符串上的字符串
- 使一组对象与 jQuery 一起拖动
- 本机浏览器承诺为一组查询的元素提供服务
- AngularJS的设计模式与具有一组公共字段的2个服务一起使用
- 有没有一种方法可以使用anagular来监视不在作用域中而是在服务中的一组变量?