Ember.js在控制器中接收“Uncaught TypeError”以执行操作

时间:2014-02-19 16:08:46

标签: html5 ember.js controller action typeerror

我收到此错误

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')};
  }, 
});

1 个答案:

答案 0 :(得分:1)

没有足够的信息来正确回答这个问题,但让我们看看。我假设你有一个明确定义的类别模型。现在,您的路由器应该具有这两个路由,并实现相应的模型挂钩。没有这些,控制器将没有合适的型号。

此外,类别控制器中的保存功能将不起作用。类别控制器的模型是一个模型数组,这就是为什么你不能调用它的保存。要么保存必须在categoryController中进行(它有一个模型并且调用将它保存在工作中),或者categoriesController需要具有它需要保存的模型的id(你必须在数组模型中搜索id,然后在记录上调用save)

这是你的路线应该是这样的:

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