2014-02-17 20 views
2

我的模型一个表,我希望能够点击我{{action 'edit'}}这些模型和灰烬的人会知道哪个型号#的{{action 'edit'}}是英寸Emberjs,目标的模型,不留“/模型”链接

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

这是我在'/ categories'路由中的代码。

<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> 

,然后控制器上:

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

404当我点击

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

和模型发生

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" 
    } 

]; 

和router.js

this.resource('categories', { path: '/categories' }); 
    this.resource('category', { path: '/category/:category_id' },function() { 
    this.route('edit'); 
    }); 

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

+1

夫妇增加,这将是有帮助的:1.您的应用程序映射(404和URL中“未定义”意味着这是一个路由的问题),2。你的模型结构的一个例子,和3 。你究竟在点击/做什么来产生这个错误。 – gravityplanx

+0

你需要在每一个中使用itemcontroller。你可以请创建一个JSFiddle来说明这个问题吗? – Martin

+0

我已经更新了这个问题。我无法为这类问题设置JSFiddle。 –

回答

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以构建独特的网址。唉,你在模型上没有这个属性,所以你需要修正你的路线,告诉Ember如何序列化你的模型。

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

一旦我删除了'未定义'错误,我发现程序完全忽略了{{action'edit'this}}和{{action'edit}}。没有错误或任何东西。现在,如果我使用了另一个操作,如“保存”,我会收到错误'未捕获的类型错误:对象[对象对象]没有方法'保存'' –

+0

如果添加console.log,您有编辑操作吗?击中它? – Kingpin2k

+0

yes console.log('Testing console');在控制台中生成“测试控制台”。 –