gpt4 book ai didi

javascript - Ember.js Route.setupController 和 ObjectController

转载 作者:行者123 更新时间:2023-12-03 11:36:19 26 4
gpt4 key购买 nike

我很困惑为什么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({});

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

(Error while processing route: index Assertion Failed: Cannot delegate set('title', Page title) to the 'content' property of object proxy : its 'content' is undefined.)

...并产生一个空白页。解决方案是返回模型(空白对象)或使用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 docs 中所述:

Ember.ObjectController is part of Ember's Controller layer. It is intended to wrap a single object, proxying unhandled attempts to get and set to the underlying model object, and to forward unhandled action attempts to its target.

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

关于javascript - Ember.js Route.setupController 和 ObjectController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com