我在更新Ember視圖上的模板屬性時遇到問題,它是一個計算屬性。Ember視圖模板作爲計算屬性
當視圖第一次加載並作爲屬性返回時,Ember會正確編譯模板,但是當後來更改依賴關係時,模板計算屬性不會更新。
這裏是上的jsfiddle一個例子:http://jsfiddle.net/VkJC3/
App=Em.Application.create();
App.MyView = Em.View.extend({
toggle: true
,template: function(){
if (this.get('toggle')) {
return Em.Handlebars.compile('toggle is true')
} else {
return Em.Handlebars.compile('toggle is false')
}
}.property('toggle')
});
theView= App.MyView.create();
theView.append('body');
Ember.run.later(function() {
console.log('later');
theView.set('toggle',false);
}, 2000);
,關於如何實現這一點的任何其他的建議被理解。也許最好只把helper放到一個句柄模板中。
編輯:
這裏是示出將包含在上述Ember.View的Ember.CollectionView一個更完整的示例:http://jsfiddle.net/VkJC3/6/
的Ember.run.later之後,第一項應該改變從類型1到類型2,並具有計算出的模板屬性更新。
App=Em.Application.create();
App.MyView = Em.CollectionView.extend({
content: [
Em.Object.create({type: 1, data:"Maybe item type 1 is a link"})
,Em.Object.create({type: 2, data:"And item type 2 is a header"})]
,itemViewClass: Em.View.extend({
template: function(){
if (this.get('content.type')==1) {
return Em.Handlebars.compile('<a href="#">{{view.content.data}}</a>')
} else if (this.get('content.type')==2) {
return Em.Handlebars.compile('<h1>{{view.content.data}}</h1>')
}
}.property('content.type')
})
});
theView= App.MyView.create();
theView.append('body');
Ember.run.later(function() {
console.log('later');
theView.get('content')[0].set('type',2);
}, 2000);
謝謝你的答覆。我擔心我的例子可能會使我想解決的問題過於簡單化。 我想使用示例視圖作爲itemViewClass的Ember.CollectionView將在其內容數組中有2個或更多類型的項目。例如,包含鏈接,標題和分隔符的列表集合視圖。然後,每個項目在itemViewClass上都有不同的模板,具體取決於該項目的內容。 – Brad
我不確定我是否理解。爲什麼你需要將模板作爲計算屬性? – MilkyWayJoe
我已經更新了我的示例以上下文中顯示此問題。該視圖被包裹在一個Ember.CollectionView – Brad