Ember.js 余烬基于内容选择视图控制器

Ember.js 余烬基于内容选择视图控制器,ember.js,Ember.js,我目前有一个视图设置,根据模型呈现模板: <ul> {{#each controller.sortedAll}} {{view App.ScoreView}} {{/each}} </ul> 并将父控制器中的VAL作为属性传递?控制器从当前范围继承(在视图中定义itemController不会做任何事情)。你应该在每台电脑上做 {{#each controller.sortedAll itemController='val'}} {{view A

我目前有一个视图设置,根据模型呈现模板:

<ul>
  {{#each controller.sortedAll}}
    {{view App.ScoreView}}
  {{/each}}
</ul>

并将父控制器中的
VAL
作为属性传递?

控制器从当前范围继承(在视图中定义itemController不会做任何事情)。你应该在每台电脑上做

{{#each controller.sortedAll itemController='val'}}
    {{view App.ScoreView}}
{{/each}}
然后在视图中,您可以执行
this.get('controller')…

如果您想在每个项目上拥有不同类型的控制器,还可以执行if语句和do
{{render'high'this}

{{#each controller.sortedAll}}
   {{#if isBlue}}
      {{render 'blue' this}}
   {{/if}}
   {{#if isGreen}}
      {{render 'green' this}}
   {{/if}}

{{/each}} 
个人建议: 为了避免使你的模板过于复杂,我只使用一个控制器

 {{#each controller.sortedAll itemController='score'}}
   {{input value=sort}}
   {{view App.ScoreView}}
 {{/each}}
添加计算属性所依赖的内容,以便自动更新:

App.ScoreView = Ember.View.extend({
  templateName: function(){
    var sort = this.get('controller.sort');
    if (sort < 8){
      return 'low';
    } else {
      return 'high';
    }
  }.property('controller.sort'),
});

示例:

BTW高和低控制器应该扩展ObjectController.Oops,这是一个输入错误。因此,如果我想拥有不同的视图,并且每个视图都有一个特定的控制器,那么我应该为每个渲染都有一个if语句,即:
{render'high'}
和另一个if语句用于
{render'low'}
?如果您想要不同的控制器,可以。老实说,这感觉像是一个很大的开销,虽然,我补充了一些建议上面
 {{#each controller.sortedAll itemController='score'}}
   {{input value=sort}}
   {{view App.ScoreView}}
 {{/each}}
App.ScoreView = Ember.View.extend({
  templateName: function(){
    var sort = this.get('controller.sort');
    if (sort < 8){
      return 'low';
    } else {
      return 'high';
    }
  }.property('controller.sort'),
});
App.ScoreController = Ember.ObjectController.extend({
  isVeryHigh: Em.computed.gt('sort', 20),
  isVeryLow: Em.computed.lt('sort', 4)
});