我有一个$scope.raw
的食品列表,我想在列中显示这些数据,所以我正在改变结构。我在sortStuff()
函数中执行此操作,并将更新的数据存储在$scope.allfood
中。有一个$手表调用$scope.raw
sortStuff()
每次有什么变化(我使用拖放来改变食品类):
$scope.$watch('raw', function(){
$scope.allfood = $scope.sortStuff();
console.log($scope.allfood);
}, true);
这是当食物被拖动周围发生的事情:
receive:function(event, ui) {
var issueScope = angular.element(ui.item).scope();
scope.$apply(function() {
var recp = _.find(scope.raw, function(lineitem){
return lineitem.name === issueScope.receipe.name;
})
recp.cat = scope.col.name;
})
$(ui.item).remove(); // remove DOM
}
基本上,我搜索$scope.raw
内的正确对象,并将cat
更改为食物的新类别。我也删除了dom元素,因为我指望ng-repeat刷新视图。这似乎工作正常:$ watch内的console.log显示对象正在被移动到正确的类别,数据看起来应该是什么样子。但是,在视觉上,ng-repeat不反映数据。
将项目从B拖到C工作正常。将一个从A拖到B,使B中的两个项目消失......结果非常不一致,我不知道发生了什么。
任何想法出了什么问题?或者,也许有更好的方法来做到这一点的任何建议?
您应该使用$ watchCollection( '原始',函数(){});但我已经做到了,并且在我的应用程序中仍然看到相同的问题... – philwills