Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ember.js从子视图转换到路由&;控制器_Ember.js - Fatal编程技术网

ember.js从子视图转换到路由&;控制器

ember.js从子视图转换到路由&;控制器,ember.js,Ember.js,我有一个模板,该模板将从路由自动呈现。车把样板指定子视图 子视图在my js中有一个扩展视图,指定要使用的控制器。它还有一个引发事件的单击处理程序。控制器处理事件 在这一点上,这是可行的-问题是,控制器试图调用 this.transitionToRoute("about") 由于某种原因,这是行不通的 我还处理主视图上的单击事件,并在其控制器中使用完全相同的方法,这确实有效那么有什么区别呢?我能做些什么来处理这个转变呢? 例如: 在本例中,您可以看到单击索引有效,而单击子视图无效 下面的代码与

我有一个模板,该模板将从路由自动呈现。车把样板指定子视图

子视图在my js中有一个扩展视图,指定要使用的控制器。它还有一个引发事件的单击处理程序。控制器处理事件

在这一点上,这是可行的-问题是,控制器试图调用

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"}}

更详细的解释可以在这里和这里找到

谢谢托马斯,他做到了这一点,最后这对我来说是有意义的。我不知道如何让余烬创建实例,谢谢你的解释。