我想在route.js文件中保存/更新操作后重新加载我的路由模型。以下是我的路线模型。
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
employeeList : this.store.findAll('employee'),
employee : this.store.createRecord("employee"),
});
}
我试过了,但它没有奏效。
this.refresh(); // I saw this in many posts.
有人可以建议如何在保存/更新操作后重新加载模型吗?
答案 0 :(得分:2)
尝试使用store.push方法。
“push用于通知Ember Data存储在后端的新记录或更新记录。这将返回loaded.saved状态中的记录”
store.push(store.normalize('employee', savedEmployee));
更多:http://emberjs.com/api/data/classes/DS.Store.html#method_push
答案 1 :(得分:1)
您可以使用setupController hook
来解决问题。
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
employeeList : this.store.findAll('employee'),
employee : this.store.createRecord("employee"),
})
setupController(controller, model) {
controller.set('employeeList', model.employee);
}
});
希望这能帮到你!!!
答案 2 :(得分:1)
我想知道这是不是时间问题。当我使用子路由时,新的记录在我的数据存储中出现了很多...即。 routes/employees.js
返回this.store.findAll('employee')
,routes/employees/new.js
返回this.store.createRecord('employee')
。
如果新路线不是一个选项,也许承诺会有所帮助吗?
export default Ember.Route.extend({
model() {
// forces a createRecord after the store is already loaded with all employees
var newEmployeePromise = new Ember.RSVP.Promise((resolve, reject) => {
let allEmployees = this.store.findAll('employee');
allEmployees.then(() => {
resolve(this.store.createRecord('employee'));
}, (error) => {
reject(error);
});
});
return Ember.RSVP.hash({
employeeList : this.store.findAll('employee'),
employee : newEmployeePromise,
});
}
}
答案 3 :(得分:1)
通过this.store.createRecord()创建新记录,将自动更新商店,因此您无需刷新页面,因为它会自动更新ui。
如果你仍然需要更新页面,就像你说你可以调用this.refresh()..你可以查看twiddle
如果你为非工作提供余韵。这样会很好。