Emberjs,在没有留下'/ models'网址的情况下定位模型

时间:2014-02-17 20:05:48

标签: url ember.js model action edit

我有一个模型表,我希望能够在其中一个模型中单击我的{{action 'edit'}},而ember将知道#{1}}所在的模型。

现在我收到此错误:'GET localhost:3000 / category / undefined 404(Not Found)'

以下是'/ categories'路线中的代码。

{{action 'edit'}}

然后在控制器上:

<tbody>
    {{#each}}
      <tr class="people-list">
        <td>
            <input type="checkbox" class="toggle">
            {{#if isEdit}}
            {{view Ember.TextField valueBinding="Name" name="Name"}}
            {{else}}
            <label class="category-text">{{#linkTo 'category' this}}{{Name}}{{/linkTo}}</label>
            {{/if}}
            <img class="table-img" src="images/x.png">
            <img class="table-img" {{action 'edit'}} src="images/pencil-grey.png">
            </td>
        </tr>
    {{/each}}
</tbody>

当我点击

时发生404
actions: {
    edit:function(){
        this.set('isEdit', true);
    }
}

和模型

<img class="table-img" {{action 'edit'}} src="images/pencil-grey.png">

和router.js

VpcYeoman.Category = DS.Model.extend({
    RecordCategoryID:DS.attr('number'),
    Name: DS.attr('string'),
    ProjectName: DS.attr('string'),
    WorkDescription: DS.attr('string'),
    workflow: DS.belongsTo('category', {
        polymorphic: true
    }),
    classNameBindings: ['isAdministrator']
});

VpcYeoman.Calendar.FIXTURES = [

  {
    id: 0,
    RecordCategoryID: 0,
    Name: "Fire",
    ProjectName: "Electra"
  },

  {
    id: 1,
    RecordCategoryID: 1,
    Name: "Water",
    ProjectName: "Nike"
  }

];

我不确定我是否应该在路由器上添加任何关于“编辑”的内容,因为我不希望程序必须更改URL以便专注于特定模型。

1 个答案:

答案 0 :(得分:1)

有一个非常简单的解决方案,只需将模型发送到操作中。

<img class="table-img" {{action 'edit' this}} src="images/pencil-grey.png">

actions: {
  edit: function(model){
    model.set('isEdit', true);
  }
}

未定义来自Ember尝试在单击链接时生成URL。它接着模型然后在模型上寻找category_id来构建唯一的url。唉,你在模型上没有那个属性,所以你需要修改你的路线告诉Ember如何序列化你的模型。

App.CategoryRoute = Em.Route.extend({
  serialize: function(model){
    return {category_id: model.get('id')};
  }
});