У меня есть список продуктов питания в $scope.raw
, и я хочу показать эти данные в столбцах, поэтому я немного изменяю структуру. Я делаю это в функции sortStuff()
и сохраняю обновленные данные в $scope.allfood
. Есть $watch, который вызывает sortStuff()
каждый раз, когда что-то меняется в $scope.raw
(я использую перетаскивание, чтобы изменить категорию еды):
$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 обновит представление. Кажется, это работает нормально: console.log внутри $watch показывает, что объект перемещается в нужную категорию, и данные выглядят так, как должны выглядеть. Однако визуально ng-repeat не отражает данные.
Перетаскивание элемента из B в C работает нормально. Перетаскивание одного элемента из A в B приводит к исчезновению двух элементов из B... результаты очень противоречивы, и я понятия не имею, что происходит.
Любые идеи, что происходит не так? Или, может быть, какие-либо предложения по лучшему способу сделать это?