出于某种原因我无法工作$ watch动态改变数组
$scope.a1 = 1;
$scope.a2 = 2;
$scope.q = [$scope.a1, $scope.a2];
$scope.$watch('q', function(newVal) {
alert(newVal);
}, true);
变化没有任何反应。错误我在初始化时收到警报。
http://jsfiddle.net/qwertmax/FtLH8/
这只是我项目的一个例子,我必须“观察”多个值(输入字段)。该字段由json请求自动生成。
所以,我注意帮助动态地将值添加到“$ watching”
答案 0 :(得分:2)
这就是我解决这个问题的方法:
由于您将自动生成字段,因此我假设您获得了一系列可能的输入。然后,您可以自动创建输入字段并绑定它们。然后,您可以观看该阵列。有点像这样:
function TodoCtrl($scope) {
$scope.inputs = [{
label: "First Input",
value: "Default Value"
}, {
label: "First Input",
value: "Default Value"
}]
$scope.$watch("inputs", function (newVal) {
alert("Changed an input");
}, true);
}
HTML:
<div ng-repeat="inpt in inputs">
<label>{{inpt.label}}</label>
<input type="text" ng-model="inpt.value">
</div>
答案 1 :(得分:1)
问题是将变量放在数组中不会创建对原始变量的引用,因为原始数据是基元。因此,当您更新ng-model
绑定的变量
你可以将ng-model
绑定到数组(即ng-model=q[0]
),但在ng-model
中使用angular是一个很好的规则,在<{1}}中有点意味着你使用的是对象而不是原语
此演示展示了您的阵列永远不会改变的方式:
答案 2 :(得分:0)