我们使用的是 Ember 的较新版本之一(路由器 V2),而不是更新的路由器 V2.2 的前沿(上次提交:668783a (2013-01-06 21:10:55 -0800))
在我们的解决方案中,我们有几个视图组件(网格、自动完成、搜索视图等)。其中一些组件访问商店、模型等,因此它们有一个控制器来处理这些工作。这些视图在我们解决方案中的多个模板中使用。
在旧版本(pre2)中,我们使用了这样的视图组件:
App.ConsoleView = Ember.View.extend({
templateName: 'console',
searchView: App.SearchView.extend(),
.....
})
在控制台模板中,我们使用了这样的通用视图
{{view view.searchView controllerBinding='App.searchController'}}
我一直觉得这种方法不是最好的方法,而新版本的 Ember 让我们大吃一惊:)
现在的问题是:“在需要控制器的模板中使用共享视图的推荐方法是什么。”
在较新版本的 Ember 中,模板表达式
{{view view.searchView controllerBinding='App.searchController'}}
不起作用,因为 App.searchController 不再在 App 命名空间中实例化。
我想过一些选择,但真的不喜欢它们。
- 我可以通过路由器将控制器连接到“父控制器”,但是我必须在使用共享组件的每条路由中都这样做,这会很多。
- 我可以通过一些 hacky 方式获取控制器并通过视图 init 函数中的 init 函数进行设置。
有人对如何做到这一点有任何建议吗?我找不到任何关于此的文档,并且已经用完了 googlejuize。
所有回复将不胜感激!