0

Food in foodslist用 ng-repeat 打印出来。每种食物都有一个复选框。

我在控制器中编写了一个 ng-click 函数,以便favourites在选中时将食物添加到数组中,如果未选中则将其删除。这行得通。food in favourites然后我使用相同的模板进行打印。

 $scope.toggleFavourite = function (food) {

   if (food.favourite === true) {
       $scope.favourites.push(food);
   } else if (food.favourite === false) {
       $scope.favourites.splice($scope.favourites.indexOf(food), 1);
   }
 }

问题 1:这是放置它的正确位置/解决这个问题的一个好的“Angular”方法吗?

问题 2:我想在原始列表中的项目和收藏列表中的项目之间创建一个“完美镜像”——收藏夹上更改的所有输入都会反映在原始列表中,反之亦然。但是默认情况下不检查收藏夹,即使“ng-checked”=“{{food.favourite}}”,对于收藏夹等于“true”。

如何确保在收藏夹中始终选中此复选框以查找食物?

见 Plunkr

--

更新

在第一个 Plunkr中,Favorites 滑块反映了原始滑块,我无需做任何额外的工作$$hashKey——元素的部分仍然相同。

然而,在我的实际实现中,Food 内容不断地通过 Ajax 重新加载。因为$$hashKey不同,元素值之间的“连接”丢失了。

这是通过 Ajax 加载内容的第二个 Plunkr,因此输入值未连接。

我正在寻找一种有效的方法来观察收藏夹和食物中食物输入的变化,基于稳定的东西(例如 food.uid)。如果一个 uid = X 的食物实例的值已更新,则另一个将更新以反映这一点。

我怎样才能做到这一点?

4

1 回答 1

1

在您的foodtemplate.html中,您有ng-checked="{{ food.favourite }}"收藏夹复选框,而不是ng-checked="food.favourite"

我不确定我是否理解更新中的问题。

于 2013-11-07T17:46:13.483 回答