Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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_Outlet - Fatal编程技术网

Ember.js 灰烬渲染到指定出口内的出口

Ember.js 灰烬渲染到指定出口内的出口,ember.js,outlet,Ember.js,Outlet,给定这些模板 <script type="text/x-handlebars"> <h3>Application outlet:</h3> <div class="outlet"> {{outlet}} <div> <h3><code>'base'</code> outlet:</h3> <div class="outlet base-outlet"&g

给定这些模板

<script type="text/x-handlebars">
  <h3>Application outlet:</h3>
  <div class="outlet">
    {{outlet}}
  <div>

  <h3><code>'base'</code> outlet:</h3>
  <div class="outlet base-outlet">
    {{outlet 'base'}}
  </div>
</script>

<script type="text/x-handlebars" data-template-name="index">
  <h1>I am the application index, I should be in the application outlet.</h1>
</script>

<script type="text/x-handlebars" data-template-name="foo">
  <p>I am foo, I have my own outlet here:</p>
  <h3>Foo Outlet:</h3>
  <div class="outlet foo-outlet">  
    {{outlet}}
  </div>
</script>

<script type="text/x-handlebars" data-template-name="foo/index">
  <p>I am foo index, I should be inside <code>#foo-outlet</code> (green border)</p>
</script>
这些路线:

App.Router.map(function() {
  this.resource('foo', function() {
    this.resource('bar');
  });
});

App.IndexRoute = Ember.Route.extend({ 
  afterModel: function() {
    this.transitionTo('foo.index');
  }
});

App.FooRoute = Ember.Route.extend({
  renderTemplate: function() {
    this.render({into: 'application', outlet: 'base'});
  }
});
我希望
foo/index
模板能够在
foo
模板中包含的
{{outlet}}
中呈现,但是它被呈现到应用程序outlet中,这里有一个实例:

注意,如果我在
renderTemplate
中调用
this.\u super()
,我会在正确的位置得到
foo/index
排序,但是
foo
模板会呈现两次

更新:我试图实现以下目标:

  • 应用程序有一个命名的出口,比如说
    'sidebar'
  • 路由可以将包装器呈现到包含其自己(未命名)出口的这个侧栏出口中
  • 然后,该路由的子路由应呈现在包装器内的出口中

  • 因此,在上面的示例中,
    foo
    路由应该将其包装器呈现到
    'base'
    出口中,然后其子路由的内容(
    foo/index
    在示例中)应该呈现在该包装器内的出口中(在示例中具有类
    foo outlet
    ).

    我认为如果您使用的是
    数据模板名称
    属性,那么您必须明确告知负责使用此模板的视图(
    模板名称
    )。您可能只想在模板定义中使用
    id
    属性,使余烬命名约定自动生效。我也会调用带有参数的
    super
    ,但不知道在这种情况下是否会发生任何变化。为自己准备一个工作示例应用程序,以遵循设计模式,以便顺利启动,从一开始就使用ember cli;)祝你好运进行这些更改并没有任何区别,我仍然可以让它几乎正常工作,但如果我将调用添加到super,可能这更像您实际想要的,并让您了解事物如何协同工作:如果这没有帮助,我不理解这个问题;)@Preexo不,那没有帮助,我已经在我的问题中添加了一个更新,试图澄清。最让我困惑的是,为什么当我在
    renderTemplate
    中调用
    \u super()
    时,我在正确的位置得到了
    foo/index
    渲染,但得到了两次
    foo
    模板渲染。我假设对
    \u super()
    的调用正在对应用程序未命名的outlet进行正常渲染,但这并不能解释为什么这样做会触发
    foo/index
    按我的需要渲染到outlet。