Ember.js覆盖的控制器不引用原始模型
Ember.js overridden controller doesn't reference the original model?
我有一个Ember.js路由,其中renderTemplate
允许由模型设置控制器/模板。我能够让新的控制器起作用,但是当调用继承的方法时,它会抛出关于没有对路由中应该由model
方法提供的模型的引用的错误。下面是路径:
App.ActivityRoute = App.GameScreenRoute.extend({
model: function(params) {
var lessons = App.getLessons(),
lessonId = params.lesson_id,
activityId = params.activity_id,
lesson = lessons[lessonId],
activity = lesson ? lesson.activities[activityId] : null;
if(activity) {
return activity.load();
}
else {
return Promise.reject();
}
},
renderTemplate: function(controller, model) {
this.render(model.get("template") || "activity", {
controller: model.get("controller") || "activity"
});
}
});
当model.controller === undefined
时,使用的控制器是ActivityController
,它由model
方法返回的模型提供,但如果我将model.controller
设置为另一个控制器,则不同的控制器没有对model
方法返回的模型的引用。
有什么是我错过或不理解的吗?
这是因为为ActivityRoute
调用的默认setupController
钩子只为ActivityController
设置模型。
我相信通过重写setupController
钩子,您将能够实现所需的行为:
setupController: function(controller, model) {
this.controllerFor(model.get("controller") || "activity").set('model', model);
}
我不是100%确定它是否会工作,控制器必须在某个地方实例化,以便由模型提供。但是我想你已经注意到了。
相关文章:
- 做<img>或者<画布>保存对原始(大)dataUrl对象的引用
- 骨干模型克隆创建对原始模型的引用
- 如何进行服务器端HTTP重定向更新引用程序(更改原始引用程序)
- 更改范围时如何正确引用原始对象
- 缩小后对原始来源的引用
- 维护 jQuery.clone() 元素对原始元素的引用
- 如何在 JavaScript 中覆盖全局函数,但保留对原始函数的引用
- Javascript - 原始与引用类型
- jQuery 插件,保留对原始元素的引用
- 停止在 javascript 中更新原始对象引用
- 主干集合 - 筛选和呈现集合将丢失对原始未筛选集合的引用
- 如何获取原始值的引用
- Object.assign保留对原始对象的引用
- 为什么引用引用don't更新原始对象
- 使源映射引用远程计算机上的原始文件
- 使用highland.js在引用原始流数据的情况下执行串行异步任务
- Javascript闭包:原始行为与引用行为
- 通过jQuery.fn.data()分配变量将保留对原始标记值的引用
- 如何在javascript中创建一个完全独立的关联数组克隆或复制,即不引用原始数据值
- Ember.js覆盖的控制器不引用原始模型