2016-07-05 75 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