2014-02-19 50 views
0

,當我嘗試使用我在我的控制器已經定義了一個「拯救」行動,我收到此錯誤Ember.js接受「遺漏的類型錯誤」行動在控制器

Uncaught TypeError: Object [object Object] has no method 'save' 

這裏是我的HTML代碼

<tbody> 
    {{#each}} 
     <tr class="people-list"> 
     <td>   
      <div class="category-text"> 
      {{input type="text" class="quick-add-element" action="save" valueBinding=Name}} 
      {{#linkTo 'category' this}} 
       {{Name}} 
      {{/linkTo}} 
      </div> 
     </td> 
     </tr> 
    {{/each}} 
    </tbody> 

這裏是我的類別控制器

actions: { 
    save: function(){ 
    var category = this.get('model'); 
    // this will tell Ember-Data to save/persist the new record 
    category.save(); 
    // then transition to the current user 
    this.transitionToRoute('category', category); 
     } 
} 

和我的類別控制器

actions: { 
    save: function(){ 
    var category = this.get('model'); 
    // this will tell Ember-Data to save/persist the new record 
    category.save(); 
    // then transition to the current user 
    this.transitionToRoute('category', category); 
     } 
} 

我的類別路由

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

什麼模板是HTML代碼? – chopper

+0

很難從代碼片斷中進行調試。如果你能爲我們製作一個jsBin,那將會容易得多。 – chopper

回答

1

沒有足夠的信息來正確回答這個問題,但讓我們來看看。我假設你有一個明確的類別模型。現在,你的路由器應該有這兩條路由,並且實現它們相應的模型鉤子。沒有這些,控制器將沒有合適的型號。

另外,類別控制器中的保存功能不起作用。類別控制器的模型是一組模型,這就是爲什麼你不能調用保存。要麼保存必須發生在categoryController(它有一個模型,並調用保存它的作品),或者categoriesController需要有它需要保存的模型的id(你必須搜索陣列模型的ID,然後調用保存的記錄)

這是你的路線應該如何看起來像:

VpcYeoman.Router.map(function() { 
    this.resource('categories', function() { 
    this.route('category'); 
    }); 
}); 

VpcYeoman.CategoriesRoute = Ember.Route.extend({ 
    model: function(){ 
    return this.store.find("category") 
    }, 
}); 

VpcYeoman.CategoryRoute = Ember.Route.extend({ 
    model: function(category){ 
    return this.store.find("category", category.category_id) 
    }, 
}); 

看看他們是如何在這裏做到這一點:

https://github.com/tastejs/todomvc/tree/gh-pages/architecture-examples/emberjs/js