2014-02-25 32 views
1

嗨我想創建一個使用emberjs + ember-data + rest adapter的數據。如何在ember.js中創建一個寄存器? store.createRecord

當數據是保存它的工作原理,但在模板中,我使用它可能是你在這種情況下重定向回來的「組」列表,如果你已經通過在組航線創建,它會在商店中生成一個空的寄存器,我想避免這種情況,但是我不確定我應該如何將這些數據放入路徑中,以指定在嘗試插入時要處理的模型數據。

在調用後在控制器中發生相同的情況「保存」它檢索API中的一個錯誤,我要求它也在數據庫中插入。

我研究了一下,在任何地方都找不到清楚如何創建一條記錄,並在出現錯誤的情況下處理該情況,或者如果有人離開模板視圖而未觸發持續數據的操作。

路由器:

App.GroupsCreateRoute = Ember.Route.extend 
    model: -> 
    @store.createRecord('group') 

    renderTemplate: -> 
    @render 'groups.create', 
     outlet: 'content' 
     into: 'application' 

對於控制器使具有形式和提交調用動作保存控制器的一個觀點:

模板:

<div class="container-content"> 
    <h1>Group</h1> 
    {{#link-to 'groups' }}List Groups{{/link-to}} 
    <form class="form-horizontal"> 
     <div class="control-group"> 
      <label class="control-label" for="name">Name</label> 
      <div class="controls"> 
       {{input type="text" name="name" id="name" value=name}} 
      </div> 
     </div> 
    </form> 
    <p> 
     <button {{action save}}>Save</button> 
    </p> 
</div> 

控制器

App.GroupsCreateController = Ember.ObjectController.extend 
    needs: ['group'] 

    actions: 
    "save": (data) -> 
     group = @get('model') 
     group.set('name', @get('name')) 
     group.save().then => 
     @transitionToRoute 'groups' 

如何創建一個路由器的正確方法+控制器創造emberjs數據?

回答

1

首先,我會建議在路由器中調用任何存儲/數據方法,而不是控制器。爲了處理在離開路線時移走數據,您需要在路線上實施停用方法,當用戶從路線中導航時,將會觸發該方法。在那裏,你需要刪除模式:

AppGroupsNewRoute = Ember.Route.extend 
    model: -> 
    @store.createRecord 'group' 
    deactivate: -> 
    @get('currentModel').deleteRecord 

如果你不想顯示模式如果不保存到店,那麼你需要用「isSaved」屬性過濾顯示列表在模型上。

+0

是的,我已經在IRC中弄清楚了這一點,謝謝你的回答,它對我來說看起來不太合適,有點奇怪的這種行爲,它應該以某種方式創建一個原始實體, ,只有在保存後纔會推送... – krolow

相關問題