2016-05-20 56 views
1

我想在route.js文件中的保存/更新操作後重新加載我的路由模型。以下是我的路線模型。Ember - 如何在保存/更新記錄後重新加載路徑模型

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

你想重新加載的原因是什麼?也許問題可以以不同的方式解決?順便說一句,「this.refresh()」在路線中工作。 –

+0

我正在使用employeeList在模板中填充網格。但是在保存一條新記錄後,它不會填充到網格中。因此,考慮重新加載模型,以便它將再次獲取所有員工細節並在模板中顯示所有細節。 –

+0

奇怪的是,新員工沒有在您的網格中顯示......我通常有一個創建新對象的子路由,所以也許這是一個計時任務。這適用於我:* route/employees.js *返回'this.store.findAll('employee')'而* route/employees/new.js *返回'this.store.createRecord('employee')'和它工作正常。你有選擇添加一條新路線嗎? –

回答

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, 
    }); 
    } 
} 
+1

不確定你想在這裏實現什麼,但這看起來好一點或什麼? http://dpaste.com/1EKCFET –

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); 
    } 
}); 

希望這對你有幫助!

+0

不會消除'employeeList'並將其替換爲單個員工? –

1

通過this.store.createRecord()創建新記錄將自動更新商店,因此不需要刷新頁面,因爲它會自動更新ui。
如果您仍然需要更新的頁面,就像你說的,你可以調用this.refresh()..請你看看twiddle

如果您提供的餘燼,玩弄非working.it將是一件好事。

相關問題