2013-02-24 42 views
1

文檔瀏覽:的模型如何綁定屬性的看法類

http://emberjs.com/guides/views/customizing-a-views-element/

討論一個類名綁定到視圖中的真/假值。 有沒有辦法將我的一個模型屬性綁定到視圖類名?

例如

App.Category = DS.Model.extend({ 
    name: DS.attr('string'), 
    type: DS.attr('string'), // The loaded model could have a type of 'typeA' or 'typeB' 
}); 

App.CategoryView = Ember.View.extend({ 
    classNameBindings: ['type'], 
    type: function(){ 
     return this.model.get('type'); // This doesn't work obviously 
    }, 
    tagName: 'li' 
}); 

會使

<li class="typeA"> [template_contents_are_here] </li> 

編輯:使用灰燼1.0RC

編輯2

所以我得遠一點,現在可以返回來自我的函數的值。但是它只會在我的第一次迭代中返回正確的值。我有一系列的車型從服務器,每個正在使用{{控制}}幫手(因此創建每次呈現一個新的視圖和控制器)

App.CategoryView = Ember.View.extend({ 
     classNameBindings: ['type'], 
     type: function(){ 
      return this.controller.get('model.type'); 
     }.property() 
     tagName: 'li' 
    }); 
+1

你可以在jsFiddle中重現這個嗎? – Wildhoney 2013-02-24 18:26:05

+0

會做。你能把我連接到一個帶有工作版本的ember rc1的小提琴,對我來說是爲了分叉嗎?我看了幾個,他們都沒有工作。編輯:沒關係 - 找到一個:http://jsfiddle.net/odigity/MXBsK/ – calumbrodie 2013-02-24 18:32:50

+0

你還可以在這裏的'報告錯誤'部分找到jsfiddles/jsbins:https://github.com/emberjs/ember.js /blob/master/CONTRIBUTING.md – CraigTeegarden 2013-02-24 18:37:22

回答

1

我更新了小提琴渲染加載: http://jsfiddle.net/mavilein/hutYc/8/

當你定義一個計算的屬性,你需要聲明哪些屬性它取決於:

App.CategoryView = Ember.View.extend({ 
    classNameBindings: ['type'], 
    type: function(){ 
     return this.get('context.type'); 
    }.property("context.type"), 
    tagName: 'li' 
}); 

注意我換成你的訪問方式的類型與屬性這是一種更加「晦澀」的做法。一個觀點應該始終在其上下文中工作。

+0

謝謝!我認爲這可能與某種競爭條件有關。在模型綁定到控制器之前是否創建了視圖? – calumbrodie 2013-02-24 22:19:43

+0

首先創建視圖。我想那麼屬性是計算和獲得緩存(計算屬性獲得緩存)。之後,控制器/型號連接到視圖。 – mavilein 2013-02-24 22:33:20

相關問題