以下是我的HTML代码。
<div class="col-md-6">
<div class="col-sm-12" ng-repeat='department in vm.otherDepartments'>
<label class="checkbox-custom-labelother_label">
<div class="custom-label-div other_label">department.name</div>
<input type="text" name="vm.experience.custom" class="other_inputbox" ng-model="vm.experience.custom[department.id]" ng-required='!vm.experience.departments'>
</label>
</div>
</div>
以下是我的控制器代码:
$scope.$watch("vm.experience.custom", function (newValue, oldValue) {
console.log('newValue:');
console.log(newValue);
vm.params.validateDepartments = _.filter(newValue, function (o) {
console.log('OOOO:');
console.log(o);
});
});
所以当我更改任何输入值时,应触发$ watch。但在这种情况下不会发生这种情况。我做错了什么?
答案 0 :(得分:0)
$ watch默认情况下只是一个浅表。 你必须将$ watch的第三个参数设置为&#34; true&#34;为了深入观察 - 检查对象的所有子属性。 所以你必须做到这一点
$scope.$watch ('property', function () {}, true);
在你的情况下,只有.custom本身的值发生变化才会触发$ watch函数。