Javascript Ember.js-使用removeObject仅删除对象的一个实例 解释
我有一个非常简单的卡路里跟踪应用程序,它使用Nutritionix API根据用户的输入搜索食物。结果被添加到Javascript Ember.js-使用removeObject仅删除对象的一个实例 解释,javascript,arrays,ember.js,Javascript,Arrays,Ember.js,我有一个非常简单的卡路里跟踪应用程序,它使用Nutritionix API根据用户的输入搜索食物。结果被添加到结果数组中,然后显示给用户。当用户单击其中一个项目旁边的“添加”按钮时,卡路里被添加到计数器中,食物本身被添加到todaysFood数组中(使用Ember的pushObject)。然后,在单独的表格中显示用户今天食用的食物 当用户单击其中一个todaysFood项目旁边的remove按钮时,它会触发一个动作removietem,并将所单击项目的索引传递到removietem。此索引在Em
结果
数组中,然后显示给用户。当用户单击其中一个项目旁边的“添加”按钮时,卡路里被添加到计数器中,食物本身被添加到todaysFood
数组中(使用Ember的pushObject
)。然后,在单独的表格中显示用户今天食用的食物
当用户单击其中一个todaysFood
项目旁边的remove
按钮时,它会触发一个动作removietem
,并将所单击项目的索引传递到removietem
。此索引在Ember的removeObject
中用于从todaysFood
数组中删除该项目,从而更新视图(从列表中删除该项目并从计数器中删除其卡路里)
问题
当多个相同项目被添加到todaysFood
时,仅在其中一个项目上单击remove
,即可删除todaysFood
中的所有实例,并显示视图。这对我现在来说是有意义的,因为docs的例子:
var cities = ['Chicago', 'Berlin', 'Lima', 'Chicago'];
cities.removeObject('Chicago'); // ['Berlin', 'Lima']
cities.removeObject('Lima'); // ['Berlin']
cities.removeObject('Tokyo') // ['Berlin']
然而,它也只是去除一个项目的卡路里,而不是所有的实例
因此,问题是:当单击remove
时,如何仅删除该项的一个实例?也就是说,如果添加了两个玉米卷,并且我在其中一个上单击了remove
,我只希望删除其中一个(从列表和卡路里中)
以下是我的removietem
操作:
removeItem(index) {
var self = this;
// Store property paths for easy access
let todaysPath = this.get('healthData').todaysFood;
let caloriesPath = 'healthData.calories';
this.set(caloriesPath, this.get(caloriesPath) - Math.round(todaysPath[index].fields.nf_calories));
todaysPath.removeObject(todaysPath[index]);
}
免责声明
我知道我可能根本没有正确处理这个问题。我愿意接受任何能让这一切变得更好的建议。谢谢 您有要删除的对象索引,因此可以尝试使用以下方法:
太简单了!这正是我所需要的,而且很有魅力。非常感谢。
todaysPath.removeAt(index);