【问题标题】:ember.js template context w/connectOutletember.js 模板上下文 w/connectOutlet
【发布时间】:2012-08-12 23:59:31
【问题描述】:

当我这样做时

var bob = App.MyModel.create().setProperties({ name: "bob marley" });
router.get('applicationController').connectOutlet('my', bob);

MyModel 的实例成为MyController 实例的content 属性。根据我在指南中阅读的内容,控制器实例成为由MyView 呈现的车把模板的上下文。

这是否意味着我总是必须在模板中为模型的属性加上 content. 前缀?

<h1>{{content.name}}</h1>

有什么我遗漏的,或者这是正确的做法吗?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    如果App.MyController 扩展Ember.ObjectController,那么你应该可以直接使用{{name}}。这是因为Ember.ObjectController 扩展了Ember.ObjectProxy,使得content 引用变得不必要。

    但是,如果您使用的是Ember.Controller,则必须像您所说的那样在属性前面加上content.。有关更多详细信息,请参阅最近提交的 @trek 的 controller documentation

    【讨论】:

    • 你不应该直接使用 Ember.Controller,最好使用“具体”类 = ObjectController 或 ArrayController。
    • 我想你的App.ApplicationController 的情况除外。不知道会不会有内置的Ember.ApplicationController
    • @pauldechov 它比Controller 提供了哪些额外的功能?
    • 我不知道 :-) 这只是一个想法。但正如@RoyTruelove 指出的那样,它似乎不像那些子类那样“具体”,尽管它是控制器的一种独特用途,并且实际上是强制性的。
    • 我想我的想法可能被称为 NavigationController,尽管我认为框架实际上并不想变得比数组和对象更具体。无论如何,我意识到Ember.Controller 可能还有其他直接用途——用于不是数组或对象的内容值,例如数字和字符串。也许是一个搜索字符串?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多