【问题标题】:can't connect routes and models to controllers properly无法将路由和模型正确连接到控制器
【发布时间】:2014-03-26 22:56:11
【问题描述】:

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

我认为我遵循了正确的命名约定,但是当我为某个路由创建控制器时,它会杀死我在路由中加载的模型......它在模板和控制器。

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

我已尝试按照指南进行所有操作,但我不知道发生了什么。如果有人能帮我解决这个问题,我将不胜感激。

更新:

我使用 ArrayController 还是 Object 似乎并不重要。无论我做什么,当我做什么:

App.ArticlesCreateRoute = Ember.Route.extend({ model: function () { return this.store.createRecord('article', {title: 'mah title', 页面内容:''}); },setupController:函数(控制器,模型){ this.controller.set('model', model); } });

当我执行 setupController 时,我实际上在后面得到了未定义的模型:

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

我确实可以访问我的控制器和视图中的文章对象 –

【问题讨论】:

    标签: ember.js


    【解决方案1】:

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

    如果你的控制器由模型支持,它应该扩展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({
       ....
    });
    

    【讨论】:

    • 嗯,这似乎无关紧要。不管我做什么,当我这样做时: App.ArticlesCreateRoute = Ember.Route.extend({ model: function () { return this.store.createRecord('article', {title: 'mah title', pageContent: '' }); }, setupController: function(controller, model) { this.controller.set('model', model); } });当我执行 setupController: function(controller, model) { this.controller.set('article', model);我确实可以访问我的控制器和视图中的文章对象
    • 已更新,下次将您的更新放入您的原始问题中,它们更容易在那里阅读(我只是从您已删除的答案中阅读它,所以一切都很好)
    猜你喜欢
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2018-07-23
    相关资源
    最近更新 更多