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)
});