2016-07-05 74 views
0

路由/numbers有JavaScript的:渲染陣列{{每個}}

// app/routes/numbers.js 
// ... 
numbers: [1,2,3,4,5], 
// ... 

,並在路線的模板:

<!-- app/templates/numbers.hbs --> 
{{#each numbers as |n|}} 
    <p>{{n}}</p> 
{{/each}} 

當我查看/numbers路線,沒有什麼在{{each}}助手內部呈現。爲什麼不?

+0

請注意,您想要在模板中訪問的任何變量應在控制器中定義 –

回答

1

您無法訪問您在模板中的路線中設置的屬性。如果要訪問模板中的數組數組,則需要使用setupController將其設置在控制器中。

的「灰燼辦法」將數據傳遞到模板是讓數據在路由的model鉤,然後在setupController

在你的路線設置在控制器上,這樣做:

model: function(params, transition) { 
    return this.get('numbers'); 
}, 

setupController: function(controller, model) { 
    controller.set('model', model); 
} 

然後在模板中,而不是訪問數字數組,使用model

{{#each model as |n|}} 
    <p>{{n}}</p> 
{{/each}} 

更多信息,請閱讀此:https://guides.emberjs.com/v2.6.0/routing/specifying-a-routes-model/

+1

setupController不是必需的。但是如果你想要設置另一個屬性到控制器。你用吧。 'controller.set( 「號碼」,模型);' – heat