http://plnkr.co/edit/m7Pt6FdDrOThKEXoohS9?p=preview
编辑列表时,按“'放弃'”时应该放弃更改,并在按“保存”时保存更改。这部分正在运作。但是,当进入编辑模式时,我将几乎空的对象推送到数据数组,以便用户可以添加新元素,如果他们不输入任何内容,则将其删除。稍后,我将查找输入的任何更改并添加更多空元素。
问题是,保存适用于现有元素,但添加新元素并不起作用,我无法弄清楚原因。
$scope.$watch('data', function(newVal, oldVal) {
console.log("Data change");
console.log(newVal);
}, true);
即使用户输入了某些内容,此代码也始终显示一个空的新对象。
答案 0 :(得分:2)
在这段代码中:
if (angular.equals({tag: '', priority: ''}, $scope.data[i-1])) {
console.log($scope.data[i-1]);
$scope.data.splice(i-1, 1);
console.log("splicing 1 - " + (i - 1));
}
添加的项目始终为空。这是因为AngularJS并不了解$scope
已更新。解决方案是将其包装到$timeout
中,以便使用新值更新$scope
。