禁用观察者/属性,直到保存记录

时间:2013-11-04 13:46:03

标签: ember.js

我的所有模型属性都默认由Ember观察,所以当我在表单中创建新记录时,我的应用程序正在更新所有使用模型的地方(帖子计数器,带标题的标题等),

在我的记录有效并保存在数据库中之前,我不希望这样的行为。

控制器:

ProManager.TasksNewController = Ember.ObjectController.extend
  headerTitle: 'Create'
  buttonTitle: 'Create'

  actions:
   save: ->
     if @content.validate()
     @content.save().then (=>
       @transitionToRoute('task', @content)
     ), (error) =>
       @content.becameError()
    else
      @content.set('errors', @content.get('validationErrors.fullMessages'))

模板:

<form id="task-form">
<fieldset>
    <div>
        <label {{bindAttr for="titleField.elementId"}}>Title</label>
        {{view Ember.TextField valueBinding='title' name='title' viewName='titleField'}}
    </div>
    <div>
        <label {{bindAttr for='descriptionField.elementId'}}>Last Name</label>
        {{view Ember.TextField valueBinding='description' name='description' viewName='descriptionField'}}
    </div>
    <a href='#' {{action save}} class='btn btn-success'>{{buttonTitle}}</a>
</fieldset>

我不想在页面上更新/显示{{title}}或{{description}},直到保存:

感谢您的帮助:)

这是一个很好的例子:http://jsbin.com/arebem/2/edit, 创建新用户时,在保存之前会在用户列表中更新first_name。

好的,我有一些解决方案,我们只有在它不脏的时候才会显示它。

{{#unless isDirty}}
<div class="accordion-on">
    <h3>#{{id}} {{title}}</h3>
    <div>
        <div>{{title}}</div>
        <div>{{description}}</div>
    </div>
</div>
{{/unless}}

1 个答案:

答案 0 :(得分:0)

解决方案模板#1

{{#unless isDirty}}
<div id="task-lists" class="well">
    <h5>#{{id}} {{title}}</h5>
    <button class="btn btn-small" {{action 'openModal' 'TasksNew' this 'Task' }}>New Task</button>

    {{#each task in content.tasks}}
        {{ render "tasks/show_accordion" task }}
    {{/each}}
</div>
{{/unless}}

解决方案模板#2(如果未保存则设置隐藏的css类)

<div {{bind-attr class=":accordion isDirty:hidden"}}>

<h3>#{{id}} {{title}}</h3>
<div>
    <div>{{title}}</div>
    <div>{{description}}</div>
</div>
</div>