ember.js从子视图转换到路由&;控制器
我有一个模板,该模板将从路由自动呈现。车把样板指定子视图 子视图在my js中有一个扩展视图,指定要使用的控制器。它还有一个引发事件的单击处理程序。控制器处理事件 在这一点上,这是可行的-问题是,控制器试图调用ember.js从子视图转换到路由&;控制器,ember.js,Ember.js,我有一个模板,该模板将从路由自动呈现。车把样板指定子视图 子视图在my js中有一个扩展视图,指定要使用的控制器。它还有一个引发事件的单击处理程序。控制器处理事件 在这一点上,这是可行的-问题是,控制器试图调用 this.transitionToRoute("about") 由于某种原因,这是行不通的 我还处理主视图上的单击事件,并在其控制器中使用完全相同的方法,这确实有效那么有什么区别呢?我能做些什么来处理这个转变呢? 例如: 在本例中,您可以看到单击索引有效,而单击子视图无效 下面的代码与
this.transitionToRoute("about")
由于某种原因,这是行不通的
我还处理主视图上的单击事件,并在其控制器中使用完全相同的方法,这确实有效那么有什么区别呢?我能做些什么来处理这个转变呢?
例如:
在本例中,您可以看到单击索引有效,而单击子视图无效
下面的代码与小提琴匹配
我的模板
<script type="text/x-handlebars">
{{#linkTo "index"}}Index{{/linkTo}}
{{#linkTo "about"}}About{{/linkTo}}
<div class="app-template">
{{outlet}}
</div>
</script>
<script type="text/x-handlebars" data-template-name="index">
<h1>Index (click me)</h1>
{{view App.ChildView}}
</script>
<script type="text/x-handlebars" data-template-name="about">
<h1>About</h1>
</script>
<script type="text/x-handlebars" data-template-name="childview">
<h2>Child View (click me)</h2>
</script>
区别在于indexController有一个对应用程序路由器的引用,但您创建的childViewController没有对所述路由器的引用。您应该让Ember为您创建控制器,您可以按如下操作
{{view App.ChildView controllerBinding="controllers.childView"}}
在ChildView中删除childController创建和控制器规范
将以下内容添加到IndexController
needs: ['childView'] // Can be a string if you only need one other controller
这将让Ember为您创建控制器,并将其添加到indexController的控制器集合中。然后,您可以在索引模板中指定一个controllerBinding
,如下所示
{{view App.ChildView controllerBinding="controllers.childView"}}
更详细的解释可以在这里和这里找到谢谢托马斯,他做到了这一点,最后这对我来说是有意义的。我不知道如何让余烬创建实例,谢谢你的解释。