AngularJS:观察数组属性
AngularJS : watch array property
问题在这里显而易见http://plnkr.co/edit/ZphAKvZeoVtuGFSEmOKg?p=preview
假设你有一个看起来像的阵列
var arr = [
{
'a': "123",
'b': "654"
},
{
'a': "456",
'b': "321"
}
];
arr.foo = 'bar';
当您更改$watch
对象内部的某些内容时(例如arr[0].a = 'hoopidoo'
),CCD_1将激发,但当更改foo
时(例如,arr.foo = 'deedlilaa'
或通过ng-model
),它不会
可能是javascript限制吗?我的意思是,当你迭代该数组时,你只会得到对象,所以没有办法枚举foo
。。
不管怎样,看看我在干什么。无论你在输入中键入什么或在控制器中做什么,手表都不会启动。
观察Array对象属性(与特定键上的对象相反)的唯一方法是显式$watch
它们:
$scope.$watch('arr.param', function(newVal, oldVal) {
// Some code
}
arr.param = 'foobar'
然而,如果你不在乎混合数字和关联数组键,你可以把plunker的第37行改成这样:
$scope.arr['param'] = "abc";
使用:
$scope.$watchCollection
特别是,您可以使用$watchColletion查看范围内的变量,并更新您的按钮或任何您需要的内容。
$scope.$watchCollection(function () {
if ($scope.myForm)
return $scope.myForm;
}, function () {
if ($scope.myForm)
if (($scope.myForm.$invalid == true))
$scope.formValidityChange(true);
else
$scope.formValidityChange(false);
}, true);
这将检查表单中更改的所有变量,并更新控制器。我想你也可以通过比较这两个对象来检查发生了什么变化,也许这会更困难。
Javascript数组不允许使用"字符串索引"。CCD_ 8将CCD_ 9的类型从CCD_。
相关文章:
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- 如何使用lodash返回与模式匹配的属性数组
- 从嵌套属性数组中获取对象嵌套值
- 如何使用 javascript 返回数据属性数组
- JQuery 获取返回的属性数组
- 对公共属性数组进行排序
- Angularjs-ng repeat不反映属性数组中的更改
- JADE&NodeJS访问JSON对象属性数组
- Lodash 按数组的属性数组过滤
- 将对象数组转换为属性数组
- 如何从一个共享属性的jQuery集合中获取一个属性数组
- 骨干移除和新视图不会重置其属性数组内容
- 使用JSON从对象数组创建属性数组
- 将数据属性数组转换为对象
- 从属性数组和匹配属性值数组创建JavaScript对象的有效方法
- 访问json中的属性数组
- jquery.获得没有重复的自定义属性数组
- 如何更新对象属性数组值
- 多属性数组语法
- jQuery:生成"name”;动态属性数组