限制{{#each a in b}}的结果

bg4*_*451 3 html javascript handlebars.js ember.js

我有一个名为Course的Model,它有一个名为users的数组变量.有没有办法限制用户的ID结果,而不是{{#each}}呈现每个ID?
这样

<script type="text/x-handlebars" data-template-name="course">
{{#each user in users 5}} 
    {{user.name}}
{{/each}}
</script>
Run Code Online (Sandbox Code Playgroud)

将显示前5个ID而不是存储在用户中的每个id?
这是我正在使用的Ember数据模型

App.Course = DS.Model.extend({
  //Attributes
  name: DS.attr('string'),
  description: DS.attr('string'),
  //Relations
  users: DS.hasMany('App.User'),
});
Run Code Online (Sandbox Code Playgroud)

我在创建registerHelper时尝试了多次,但是当它出现'a in b'时似乎总是出错.任何帮助或想法将不胜感激.非常感谢你!

int*_*xel 8

#each与使用#each帮助程序在数组上循环时,您可以采用不同的方法来显示有限数量的项目,而不是修改帮助程序.

有关可能的实现,请参阅此

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return [
      Ember.Object.create({id:1, name:'Red'}),
      Ember.Object.create({id:2, name:'Green'}),
      Ember.Object.create({id:3, name:'Blue'})
    ];
  }
});

App.IndexController = Ember.ArrayController.extend({
  limitedContent: function() {
    return this.get('content').splice(0, 2);
  }.property('content')
});
Run Code Online (Sandbox Code Playgroud)

.property('content')定义绑定到控制器的内容和需要照顾的#each助手重新渲染时content的变化.

然后在你的模板中循环limitedContent而不是content:

<script type="text/x-handlebars" data-template-name="course">
  {{#each color in limitedContent}} 
    {{color.name}}
  {{/each}}
</script>
Run Code Online (Sandbox Code Playgroud)

这里有一个工作的jsbin,展示了所提到的概念.

希望能帮助到你