2016-08-05 64 views
0

我有一個非常簡單的作者模型,只有一個字段,名稱。我的作者/新模板中有一個表單,它在提交時調用操作保存。餘燼 - 未能保存新模型

<form {{action "save" on="submit"}}> 
    {{input value=model.name placeholder="Name"}}<br> 
    <input type="submit" value="Save"> 

</form> 

在我爲作者/新建的路線中,我定義了創建作者記錄的模型,然後定義保存此模型的動作保存。

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     return this.store.createRecord('author'); 
    }, 
    actions: { 
     save() { 
      this.get('model').save(); 
     } 
    } 
}); 

但是,當我點擊保存按鈕,我的控制檯中出現以下錯誤。 Uncaught TypeError: this.get(...).save is not a function。任何人都可以幫我解決我做錯了什麼嗎?

+0

this.get(「模型」)返回路線定義函數模型......一個可能的解決辦法是將你保存功能,控制器會工作。 – kumkanillam

+0

從控制器而不是從路線獲取模型。要獲取控制器,請使用var cont = this.controllerFor('authors.new'); cont.get('model')。save(); – kumkanillam

+0

您可以使用[modelFor](http://emberjs.com/api/classes/Ember.Route.html#method_modelFor)獲取路線中的模型, –

回答

0

最簡單,最乾淨的將是模型傳遞到您的存儲功能:

<form {{action "save" on="submit" model}}>

save(model) { model.save(); }

0

嘗試使用modelFor只嵌套路線。

由於您只在您的路由中實現了model掛鉤,因此ember將使用默認實現應用所有其他掛鉤。

它設置任何從模型鉤返回model在您的controller

所以,你可以在這裏做的是:

let newAuthor = this.get('controller.model'); 
    newAuthor.save().then(() => { return console.log('it saved!') });