繁体   English   中英

如何在ember.js中创建一个寄存器? store.createRecord

[英]How to create one register in ember.js? store.createRecord

嗨,我正在尝试使用emberjs + ember-data + rest适配器创建一个数据。

它在保存数据时起作用,但是在我使用的模板中,如果您已经通过了组创建的路由,则有可能您重定向回“组”列表,在这种情况下,它将生成一个空寄存器在商店中,我想避免这种情况,但是我不确定应该在路线中指定什么内容,以指定尝试插入时要处理的模型数据。

当在控制器中调用“保存”后,它在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中创建数据的正确方法?

首先,我建议在路由器而不是控制器中调用任何存储/数据方法。 要在离开路线时处理数据删除,您需要在路线上实现deactivate方法,该方法将在用户从路线导航时触发。 在其中,您需要删除模型:

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

如果不想显示未保存到商店的模型,则需要通过模型上的“ isSaved”属性过滤显示的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM