我有一个带有自定义控制器的Ember视图。视图需要知道其父视图,因此它声明了一个" needs"。然而,不知何故,我似乎无法从模板中检索自定义控制器; "控制器"属性绑定到父视图而不是当前视图。
我创建了一个说明问题的JSBin:http://jsbin.com/muwikora/3/edit
如输出所示," controller"绑定到ApplicationController而不是MyViewController,这是我所期望的。
我看到MyViewController正在创建并且在我可以存储它的路线中可用,但它似乎不是一个很好的解决方案。这样做的正确方法是什么?
答案 0 :(得分:2)
手柄视图助手不允许您指定要与视图一起使用的控制器。它允许您使用当前上下文呈现视图,这就是您将应用程序控制器视为控制器的原因,在应用程序模板中调用{{view App.MyView }}
将传递其ApplicationController的上下文
渲染帮助程序更符合您的需求,它允许您动态创建视图/控制器堆栈。
参见修订后的JSBin:http://jsbin.com/muwikora/4/edit
查看此答案以获取更多信息:ember.js + handlebars: render vs outlet vs partial vs view vs control
我鼓励您阅读有关创建复杂视图的最佳实践的讨论。使用渲染有一些后果,你应该知道http://discuss.emberjs.com/t/best-practices-when-creating-a-complex-page-render-vs-component-vs-view/4045/2