玩弄 ember,我发现有时模型存储在控制器的content
属性中,有时模型也直接在控制器上可用。但是,我不明白什么时候是这种情况。
让我通过一个我在组装我的 ember MVC 时找到的例子来解释它。
设置 A - 开始
- 我定义了一个自定义
Member
对象、对应MemberRoute
的MemberView
类和一个名为 的模板member
。 - 该
Member
对象具有一些属性,例如id
,nickname
等。 - 注意:没有
MemberController
定义表单的控制器,因此按照 ember 的约定,它自己提供控制器。
设置 B - 自定义
- 与设置 A 相同,但现在有一个
MemberController
定义,其中包含一些从模板内触发的操作方法。
奇怪的行为(分别是我不完全理解的)
- 在设置 A 中,我可以使用或
Member
直接引用 的属性。{{id}}
{{nickname}}
- 在设置 B 中,我必须使用
{{content.id}}
或{{content.nickname}}
如 ember 的文档MemberView
中所述,
setupController : function(controller, member) {
controller.set('content', member);
},
那么,有人可以帮我理解为什么会有差异以及差异在哪里吗?目前,我的猜测是
- 模板的上下文不同(可能在控制器的设置中缺少代码片段?)
或者
- ember 自动提供的默认控制器有一些额外的魔法,这些魔法不能直接用于自定义控制器。
任何帮助理解这一点都非常感谢。我已经花了很长时间才走到这一步。我首先认为这可能是使用 requireJS 的项目设置引入的模块化(嗯,我仍然认为这可能会产生影响)。Ember 是 v1.0pre4。
提前致谢!帕特里克