为什么ember自动将不正确的控制器传递给视图实例?

时间:2012-09-06 22:02:34

标签: ember.js

我正在尝试在模板中添加视图。此模板定义了一个名为NewAssetLinkView的视图。在里面我正在添加TracksView。 ember给出了例外:

未捕获错误:断言失败:Ember.CollectionView的内容必须实现Ember.Array。您传递了AssetLinksApp.NewAssetLinkController:ember538

似乎路由器正在尝试自动创建NewAssetLinksController并将其应用于TracksView,这是错误的。也许这样做是因为TracksView在NewAssetLinkView中声明了? (顺便说一下,NewAssetLinkController扩展了ObjectController)

我有TracksView应该使用的TracksController - 如何让路由器不尝试自动创建并将错误的控制器与TracksView关联?

<script type="text/x-handlebars" data-template-name="new_asset_link_view">
    .....
    {{view AssetLinksApp.TracksView}}
</script>

1 个答案:

答案 0 :(得分:5)

当您在模板内实例化视图时,新创建的视图将传递到创建它的视图的控制器。这非常有用,因为任何视图都可以访问controller,并且不需要绑定parentView.controller之类的内容。

但是,在您的情况下,您想使用其他控制器。因此,您可以使用{{view}}帮助程序传递控制器绑定。

尝试使用

{{view AssetLinksApp.TracksView controller="AssetLinksApp.tracksController"}}