无法正确连接路由器和模型到控制器

时间:2014-03-26 22:56:11

标签: ember.js

好像我的应用程序中有断开连接。

我认为我遵循了正确的命名约定,但是当我为某条路线创建一个控制器时,它会杀死我在路线中加载的模型......它在未定义的情况下会被取消模板和控制器。

我的代码在这里: https://github.com/mgenev/Full-Stack-JS-Boilerplate/tree/master/public/ember

我试图按照指南说明一切,我不知道发生了什么。如果有人能帮我解决这个问题,我会非常感激。

更新

我是否使用ArrayController或Object对象似乎无关紧要。不管我做什么,当我做的时候:

  

App.ArticlesCreateRoute = Ember.Route.extend({model:function(){   返回this.store.createRecord('文章',{title:' mah title',   pageContent:''}); ,setupController:function(controller,model){   this.controller.set(' model',model); }});

当我做setupController时,我实际上最终得到了未定义的模型:

function(controller, model) { this.controller.set('article', model); }

我可以访问控制器中的文章对象并查看 -

1 个答案:

答案 0 :(得分:0)

我目前只看到一个控制器,所以我猜错了。

如果您的控制器由模型支持,它应该扩展ObjectController,如果它由集合支持,它应该扩展ArrayController,如果它没有任何支持,它应该扩展ControllerObjectControllerArrayController代理请求从控制器到模型/集合。

因此,如果您有一个由集合支持的ArticlesController,则应该像这样定义

App.ArticlesController = Ember.ArrayController.extend({

});

更新

如果你正在做的只是在控制器上设置模型,那么包含setupController是没有意义的,这是setupController的默认实现。你也不应该这样做。控制器,你应该使用发送到方法中的引用。

App.ArticlesCreateRoute = Ember.Route.extend({
    model: function () {
      return this.store.createRecord('article', {title: 'mah title', pageContent: ''});
    }
});

并将控制器更新为ObjectController

App.ArticlesCreateController = Ember.ObjectController.extend({
   ....
});