我有一些与食物相关的投入。用户可以从选择列表中选择“单位”并使用 AngularUI 滑块输入数量。当用户输入任何食物的单位或数量值时,食物及其值将被添加到数组中,editedFoods
.
单击类别标题时,我的页面通过 http 请求加载内容。该editedFoods
数组的目的是它可用于在内容重新加载后保留用户选择的值。
目前,in 中的元素editedFoods
与其原始 food 元素保持实时连接,直到内容被重新加载。然后更改的食物元素被视为新元素并新添加到数组中。
当更改选择或滑块时,我致电addSelection(food)
。这会检查食物是否已经在数组中,如果没有,则通过检查 indexOf 来添加它food
:
//Add changed food to array
$scope.editedFood = [];
// toggle selection for a given food
$scope.addSelection = function addSelection(food) {
var idx = $scope.editedFood.indexOf(food);
// is currently selected
if (idx === -1) {
$scope.editedFood.push(food);
}
现在,这一直有效,直到重新加载食物类别。之后,即使已经存在匹配的食物元素,它也会添加一个新的食物元素。
这是Plunkr
为什么它food
在editedFood中没有找到,并在重新加载食物内容后重新添加?我是否可以通过搜索比food
食物的唯一 ID (food.uid) 更具体的内容来改进此搜索,以便该限定符即使在重新加载后也能正常工作?