2013-03-05 195 views
2

我可能在阅读错误的文档。有人可以请check out my gist并告诉我为什么invoices/index模板没有渲染?Ember.js模板渲染

当我读到the ember.js docs它指出它应该呈现

posts 
↳posts/index 

(在我的情况invoices/index)。但invoices模板呈现。

把手:

<script type="text/x-handlebars" data-template-name="application"> 
    <h1>Ember Committers</h1> 
    <nav> 
     {{#linkTo "index"}}Index{{/linkTo}} 
     {{#linkTo "about"}}About{{/linkTo}} 
     {{#linkTo "invoices"}}Invoices{{/linkTo}} 
    </nav> 
    {{ outlet }} 
</script> 

<script type="text/x-handlebars" data-template-name="invoices"> 
    <h1>Invoices</h1> 
</script> 

<script type="text/x-handlebars" data-template-name="invoices/index"> 
    <ul> 
     {{#each invoice in invoices }} 
     <li>{{#linkTo "show" invoice.id}}{{ invoice.id }}{{/linkTo }}</li> 
     {{/each }} 
    </ul> 
</script> 

<script type="text/x-handlebars" data-template-name="invoices/show"> 
    <p>Invoice - {{ name }}</p> 
</script> 

<script type="text/x-handlebars" data-template-name="phone"> 
    <p>Contributor - {{ title }}</p> 
</script> 

<script type="text/x-handlebars" data-template-name="about"> 
    <p>About {{ title }}</p> 
</script> 

<script type="text/x-handlebars" data-template-name="index"> 
    <p>Index</p> 
</script> 

的JavaScript:

<script type="text/javascript" defer> 
    var App = Ember.Application.create({ 
     LOG_TRANSITIONS: true 
    }); 
    App.ApplicationView = Ember.View.extend({ 
     templateName: 'application' 
    }); 

    App.Router.map(function() { 
     this.route("about"); 
     this.resource("invoices", { path: "/invoices" }, function() { 
      this.resource("show", { path: "/:id" }); 
     }); 
    }); 

    var invoices = [ 
     {id: 1}, 
     {id: 2} 
    ]; 

    App.AboutRoute = Ember.Route.extend({ 
     setupController: function (controller) { 
      // Set the IndexController's `title` 
      controller.set('title', "My App"); 
     } 
    }); 

    App.InvoicesIndexController = Ember.ArrayController.extend({ 
     invoices: invoices 
    }); 

</script> 

回答

4

您需要在您的invoices模板的{{outlet}}标签。由于indexshowinvoices的嵌套资源,因此它们的模板会在您在invoices模板中指定的出口内呈现。

查看Ember.js指南的nested resources部分。