Ember.js 在带有组件的Ember 2中,当我想在创建其他记录的同时创建记录时,如何避免使用观察者
例如: 假设我有一个模型,Food.js,带有:Ember.js 在带有组件的Ember 2中,当我想在创建其他记录的同时创建记录时,如何避免使用观察者,ember.js,Ember.js,例如: 假设我有一个模型,Food.js,带有: name: DS.attr('string'), groupName: DS.attr('string'), isMeat: DS.attr('boolean'), kitchen: DS.belongsTo('kitchen', {async: true}) 我还有一个模型,Fridge.js,带有: name: DS.attr('string'), groupName: DS.attr('string'), kitchen: DS.belo
name: DS.attr('string'),
groupName: DS.attr('string'),
isMeat: DS.attr('boolean'),
kitchen: DS.belongsTo('kitchen', {async: true})
我还有一个模型,Fridge.js,带有:
name: DS.attr('string'),
groupName: DS.attr('string'),
kitchen: DS.belongsTo('kitchen', {async: true})
这些数据集中在厨房模型中:
name: DS.attr('string'),
foods: DS.hasMany('food', {async: true}),
fridges: DS.hasMany('fridge', {async: true})
我有一个管理厨房创建的主要组件。在子组件中,用户可以在商店中创建新食品,并保存到数据库。该组件还允许用户编辑厨房中已有的食物
我想做的是,根据需要多少台冰箱,自动创建或删除冰箱记录。目前,我将在厨房管理组件中与这样的观察者一起执行此操作:
foodToFridgeMapper: function() {
Ember.run.once(this, function() {
// Loop through all the foods, populate requiredFridges based on isMeat and groupNames
let requiredFridges = ...;
// Compare required fridges to existing fridges
// Call deleteRecord on any no longer required
// Create record for any that don't exist and are required
...
}
}.observes('kitchen.foods.[]', 'kitchen.foods.@each.isMeat', 'kitchen.foods.@each.groupName')
我讨厌观察家。如何实现与另一个数组一起创建和删除记录的逻辑,但避免它们
请注意,这个问题与观察者类似,但不同之处在于,这里的重点是如何将所有东西移到观察者之外的组件环境中,而不是控制器中。诀窍:找到观察者的最低共同祖先
Sam Selikoff的这篇文章真的很棒,它帮助我构建了更好的用户界面:如果我们像你建议的那样使用ember虫洞,那么我们可以将它们更紧密地结合在一起,然后使用DDAU。与此同时,冰箱的制造实际上可以在制造食物的组件中完成,因为它也可以看到当前的冰箱,所以LCA本身就有一种奇怪的方式。