如何在部分路径中使用应用程序模型?

时间:2013-08-16 23:10:32

标签: ember.js

我认为这应该是一个非常简单的解决方案,我只是无法弄明白。 我的ApplicationRoute中有这个模型:

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return {
      sideNav: data.side, 
      breadcrumbs: Util.breadcrumbs()
    }
  }
});

申请模板:

<script type="text/x-handlebars" data-template-name="application"> 

    {{outlet}}

</script>

概述模板:

<script type="text/x-handlebars" data-template-name="overview">

    {{partial side}}

</script>

_side partial:

<script type="text/x-handlebars" id="_side">

    {{#each model.side}}

        <i {{bindAttr class="iconClass"}}></i><p>{{label}}</p>

    {{/each}}

</script> 

当我加载我的概述路线时,那里的东西会加载,但是应用程序模型不会像我希望的那样应用于侧面部分...可能有更好的方法来执行此操作。谢谢!

1 个答案:

答案 0 :(得分:1)

看起来你有两个问题:

  1. 您在部分内部绑定side而不是sideNav
  2. 您正在尝试访问ApplicationRoute模板中的overview模型(可能有自己的路径和控制器)
  3. 部分不会改变上下文,因此它们不会增加任何复杂性。例如,如果我们将自己限制在application模板,则以下内容将起作用:

    App.ApplicationRoute = Ember.Route.extend({
        model: function() {
            return {
                foo: 'bar'   
            };
        }
    });
    
    <script type="text/x-handlebars" data-template-name="application">
        {{partial partial}}
        {{outlet}}
    </script>
    
    <script type="text/x-handlebars" data-template-name="_partial">
        {{foo}}
    </script>
    

    但是,如果您希望获得嵌套路线内的application模型,则需要提出要求。例如,在(默认)index路线内,您可以添加以下内容:

    App.IndexRoute = Ember.Route.extend({
        model: function() {
            return this.modelFor('application');   
        }
    });
    
    <script type="text/x-handlebars" data-template-name="index">
        {{partial partial}}
    </script>
    

    You can see both examples in this jsfiddle