是否可以在路线行动中访问路线模型?
我将路径模型中的多个对象传递给模板,
model: function() {
return {
employeeList : this.store.findAll("employee"),
employee : Ember.Object.create()
}
}
从路线动作我想修改路线model.employee。我尝试了以下内容,但我没有得到该对象。
actions:{
editAction : function(id) {
var emp = this.get("model");
console.log(emp.employee);
}
}
任何人都可以提供获取和修改模型对象(员工)的解决方案吗?
答案 0 :(得分:31)
第一个问题是你应该从模型钩子返回一个promise。这样,过渡将等待Resolve的承诺。 return { /*...*/};
返回一个对象而不是一个promise,即使该对象本身包含promise。
解决方案是使用Ember.RSVP.hash
之类的:
model() {
return Ember.RSVP.hash({
employeeList: this.store.findAll('employee'),
employee: Ember.Object.create()
});
}
这将返回一个承诺,当所有内部承诺解决后,该承诺将解决。
第二个问题是你不能在路线中使用this.get('model')
。如果你考虑一下,model
属性就是钩子本身而不是已解析的模型。解决方案:
this.modelFor(this.routeName);
将返回当前路线的模型。this.controller.get('model')
。this.set('employeeModel', model);
之类的操作以供日后访问。答案 1 :(得分:0)
this.get('context')
允许您在路线操作中访问模型。