此解决方案适用于“静态”渲染(stuff
在渲染之前设置的值,而不是更改......):
车把
<script type="text/x-handlebars" data-template-name='app-view'>
<ul>
<li>Item 1</li>
{{#if view.stuff}}
<li>Item 2</li>
{{/if}}
<li>Item 3</li>
</ul>
</script>
JS
App.ApplicationView = Ember.View.extend({
templateName: 'app-view',
stuffBinding: 'App.stuff',
didInsertElement: function () {
this.$('ul>li').button();
}
})
您缺少view.
视图中的范围。
在这里工作 JSFiddle:http: //jsfiddle.net/MikeAski/H6MNj/
对于stuff
随时间变化的值,尝试解耦Item 2
渲染,并将其嵌套在包含条件显示逻辑的子视图中。
车把
<script type="text/x-handlebars" data-template-name='app-view'>
<ul>
<li>Item 1</li>
{{#view view.stuffView}}Item 2{{/view}}
<li>Item 3</li>
</ul>
</script>
JS
App.ApplicationView = Ember.View.extend({
templateName: 'app-view',
didInsertElement: function () {
this.$('ul>li').button();
},
stuffBinding: 'App.foo.bar',
stuffView: Ember.View.extend({
tagName: 'li',
stuffBinding: 'App.foo.bar',
isVisible: function() {
var stuff = this.get('stuff');
return stuff;
}.property('stuff'),
didInsertElement: function () {
this.$().button();
}
})
})
JSFiddle 更新 @ http://jsfiddle.net/MikeAski/H6MNj/3/
CollectionView
另一种可能的方法是使用(或each
助手)呈现可能会有所不同的项目列表。
如果您想要样品,请告诉我。