Saya memiliki daftar makanan di $scope.raw
dan saya ingin menampilkan data ini dalam kolom jadi saya mengubah strukturnya sedikit. Saya melakukan ini di fungsi sortStuff()
dan menyimpan data yang diperbarui di $scope.allfood
. Ada $watch yang memanggil sortStuff()
setiap kali ada perubahan di $scope.raw
(Saya menggunakan drag and drop untuk mengubah kategori makanan):
$scope.$watch('raw', function(){
$scope.allfood = $scope.sortStuff();
console.log($scope.allfood);
}, true);
Inilah yang terjadi jika makanan diseret:
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
}
Pada dasarnya, saya mencari objek yang tepat di dalam $scope.raw
dan mengubah cat
ke kategori baru untuk makanan tersebut. Saya juga menghapus elemen dom karena saya mengandalkan ng-repeat untuk menyegarkan tampilan. Tampaknya ini berfungsi dengan baik: console.log di dalam $watch menunjukkan bahwa objek dipindahkan ke kategori yang tepat dan datanya terlihat seperti apa seharusnya. Namun, secara visual, ng-repeat tidak mencerminkan data.
Menyeret item dari B ke C berfungsi dengan baik. Menyeret satu dari A ke B, membuat dua item dari B menghilang... hasilnya sangat tidak konsisten dan saya tidak tahu apa yang terjadi.
Ada ide apa yang salah? Atau mungkin ada saran cara yang lebih baik untuk melakukan ini?