[英]Ember.js Route.setupController with ObjectController
我不知道为什么Route
和Controller
如何影响默认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.