如何更新ember模型中的记录

时间:2013-08-24 12:29:31

标签: javascript jquery ember.js ember-data

我正在从App.Resource.find()获取记录列表这很好用。

对于每行数据,都有一个带有固定值的下拉框。当对下拉框进行更改时,我想向服务器发出POSTPUT请求,以使用下拉列表中新选择的值更新该行。

我遇到两件事有困难:

  • 如何获取模型或控制器中下拉菜单的ID和所选value
  • 如何获取这些值并向服务器发出请求。有App.Resource.update...吗?

我有一个带有本地数据的工作示例的jsBin:http://jsbin.com/OcAyoYo/84/edit

1 个答案:

答案 0 :(得分:0)

好的,这是获取所选值的一种方法,让我们把它们放在应该去的地方,好吧,首先,让我们创建一个控制器,它将装饰你的响应记录,你混合了名字,你正在使用Post所以,我会用这个名字,这是控制器:

App.PostController = Ember.ObjectController.extend({
  selectedChanged: function() {
    //here, you have access to the selected value with this:
    // this.get('selected')

    //And also, this controller represents you object rendered on the screen,
    //so, you can change it here if you want like this:
    //this.set('whataverPropertyYouWantToChange', 'newValue');

    //then you can save this record(send the request to the server) by just doing this:
    //this.save(); this will make a request to the server
  }.observes('selected')
});

然后,为了使用该控制器,将渲染记录的循环更改为:

{{#each model itemController="post"}}
  <tr>
    <td>{{author}}</td>
    <td>{{book}}</td>
    <td>
      {{view Ember.Select
        contentBinding= 'App.names.content'
        selectionBinding='selected'}}
    </td>
  </tr>
{{/each}}

请注意,在PostController中,即使'selected'属性具有空值,也会触发观察者,您需要验证它是否为空。