编辑:我已设置实际的repro of the issue on JSBIN
现在试图解决这个问题一段时间了,我显然不明白模型和setupController之间的关系是如何工作的。我有一个返回哈希的模型;两个查找调用的结果:
model(params) {
return Ember.RSVP.hash({
course: this.store.find('course', params.course_id),
topics: this.store.find('topic', { course_id: params.course_id })
});
},
第一次调用setupController时,如果符合预期,model
的值为{ course: <Class>, topics: <Class> }
之类的哈希值。太棒了,这就是我想要的。
但是,下次调用setupController时(例如,转换到另一个路径,然后按浏览器中的后退按钮),model
现在只是课程{{ 1}}:
<Class>
如果我只让setupController(controller, model) {
// when first called model will be { course: <Class>, topics: <Class> }
// next time entered, model will just be <Class> (just the value of "course" )
// why is the model object not preserved?
controller.set('model', model.course);
controller.set('topics', model.topics);
}}
返回一个资源,那么每次都是一样的:
model()
为什么在使用哈希结果时不保留原始模型?我做错了吗?
答案 0 :(得分:3)
您在此处链接时发送模型color
:
{{#link-to 'color' color}}{{color.name}}{{/link-to}}
因此,模型钩子不会运行。如果将其更改为color.id,它将起作用。
它提到了here。
在上面的例子中,PhotoRoute的模型钩子将运行 params.photo_id = 5. CommentRoute的模型钩子从那以后就不再运行了 您为评论段提供了一个模型对象。评论的内容 将根据CommentRoute的序列化挂钩填充网址。
答案 1 :(得分:2)
观察它,原始模型将不会被保留,因为在setupController上,您正在调用controller.set('model',model.course)。首次加载时,它会适当调用{{link-to}}
函数,但在后退按钮转换和某些controller.set('course', model.course);
调用时,情况并非总是如此。
在你的setupController中,尝试将其更改为def resol(t, y, par):
p1111, p1212, p2121, p1112, p1121, p1122, p1221, p1222, p2122 = y
gamma, h, H = par
,这样你就不会在执行时覆盖你的模型,它总能找到它。