Emberjs复选框保存到数据库

时间:2013-12-06 18:33:48

标签: javascript checkbox ember.js

我有一个复选框,需要在更改值后立即保存到数据库。它受数据元素审计的约束。这是模板中的复选框:

{{view Site.ReleaseChecklistToggleView checkedBinding="audit" contentBinding="this" placeholder="#"}}

以下是Site.ReleaseChecklistToggleView定义为:

的内容
Site.ReleaseChecklistToggleView = Em.Checkbox.extend(
    change: (e)->
        this.content.save()
)

在调用更改之前,似乎未设置审计。它将audit变量null传递给数据库,但如果我在console.log(this.content.audit)方法中change,则会告诉我true的正确值或false。我唯一的结论是,在更改方法运行之前,它不会更新ember模型。

有什么建议吗?我使用了错误的方法吗?

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

Site.ReleaseChecklistToggleView = Em.Checkbox.extend(
  valueChanged: ->
    @get("content").save()
.observes("checked"))

答案 1 :(得分:0)

查看Todo应用程序的Ember指南(http://emberjs.com/guides/getting-started/marking-a-model-as-complete-incomplete/)。通过以下方式,我能够通过复选框自动保存特定属性。

如果链接不再有效,这就是他们这样做的方式......

车把

<!--- ... additional lines truncated for brevity ... -->
{{#each itemController="todo"}}
  <li {{bind-attr class="isCompleted:completed"}}>
    {{input type="checkbox" checked=isCompleted class="toggle"}}
    <label>{{title}}</label><button class="destroy"></button>
  </li>
{{/each}}
<!--- ... additional lines truncated for brevity ... -->

控制器

Todos.TodoController = Ember.ObjectController.extend({
  isCompleted: function(key, value){
    var model = this.get('model');

    if (value === undefined) {
      // property being used as a getter
      return model.get('isCompleted');
    } else {
      // property being used as a setter
      model.set('isCompleted', value);
      model.save();
      return value;
    }
  }.property('model.isCompleted')
});