繁体   English   中英

Ember.js Route.setupController与ObjectController

[英]Ember.js Route.setupController with ObjectController

我不知道为什么RouteController如何影响默认Model 这是一个例子。

App.ApplicationRoute = Ember.Route.extend({
    setupController: function(controller, model) {
        this._super(controller, model);
        console.log(model); //returns undefined
        controller.set("title", "Page title");
    }
});

上面的代码片段可以正常工作 模板将按预期打印{{title}} 注意该模型是“未定义的”。

App.ApplicationRoute = Ember.Route.extend({
    setupController: function(controller, model) {
        this._super(controller, model);
        console.log(model); //returns undefined
        controller.set("title", "Page title");
    }
});

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

上面的代码抛出错误 ...

(处理路由时发生错误:索引断言失败:无法将set('title',Page title)委派给对象代理的'content'属性:其'content'未定义。)

...并产生空白页。 解决方案是返回模型(空白对象)或使用Controller (默认行为)代替ObjectController 有人可以解释这种特殊情况吗? 为什么Ember在使用ObjectController时不假定为空对象? 是否假设对象将在商店或服务器中传递或从中检索?

App.ApplicationRoute = Ember.Route.extend({
    model: function() {
        return {};
    },
    setupController: function(controller, model) {
        this._super(controller, model);
        console.log(model);
        controller.set("title", "Page title");
    }
});

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

Ember文档所述

Ember.ObjectController是Ember的Controller层的一部分。 它旨在包装单个对象,代理获取和设置到基础模型对象的未处理尝试,并将未处理的操作尝试转发到其目标。

ObjectController希望存在一个模型并将其设置为内容。 它基本上是单个对象的包装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM