2014-07-14 169 views
2

我有一個對象數組,我需要在每個對象上設置屬性爲true或false。你如何使用@set在數組上設置屬性?另外,如果在這樣的數組上完成,新值(真/假)是否會傳遞到模板中?先謝謝您的幫助。這裏是我的代碼:在for循環中設置屬性

formTypesWithUsed: Ember.computed 'formTypes.[]', -> 
    @get('formTypes').forEach (formType)-> 
     @set 'formType.formTypeUsed', true 

formTypes: 
    [ 
    { name: 'some form 1', formTypeUsed: false } 
    { name: 'some form 2', formTypeUsed: false } 
    { name: 'some form 3', formTypeUsed: false } 
    { name: 'some form 4', formTypeUsed: false } 
    { name: 'some form 5', formTypeUsed: false } 
    { name: 'some form 6', formTypeUsed: false } 
    { name: 'some form 7', formTypeUsed: false } 
    ] 

回答

1

我知道它與以下工作。感謝鄧肯的所有幫助:

formTypes: Em.A [ 
    { name: 'some form 1', formTypeUsed: false } 
    { name: 'some form 2', formTypeUsed: false } 
    { name: 'some form 3', formTypeUsed: false } 
    { name: 'some form 4', formTypeUsed: false } 
    { name: 'some form 5', formTypeUsed: false } 
    { name: 'some form 6', formTypeUsed: false } 
    { name: 'some form 7', formTypeUsed: false } 
    ] 

formTypesWithCount: Em.computed '@formTypes', -> 

    formTypes = @get('formTypes').map (formType)-> 
    Em.Object.create().setProperties(formType) 

    formTypes.map (formType)-> 
    formType.set 'formTypeUsed', true 
+0

更多upvote如果翻譯成js .. – Melvin

1

在JS(我試圖用咖啡轉換器,但它看起來並不正確):當你在你的模板中使用{{#each formTypesWithUsed}}

formTypesWithUsed: function() { 
    return this.get('formTypes').forEach(function(formType) { 
    formType.set('formTypeUsed', true); 
    }); 
}.property('formTypes.[]'), 

這麼久了,一切都綁定並且新值將傳遞到模板中。如果您想要更改實際formTypes屬性的真/假值並使用{{#each}}{{#each controller}},則應該使用觀察者而不是計算屬性,但函數將保持不變,即減去return

使用set()任何時候,把手會自動顯示出新的價值。

+0

嘿鄧肯!我是一個小菜鳥。有時候用咖啡標記我忘記了我指的是'這個'。出於某種原因,我仍然'未定義不是一個函數',雖然。 – sturoid

+0

'formTypes'肯定是'Ember.Array'? –

+0

它的字面意思就像上面那樣。我認爲我的主要問題是我沒有像你說的那樣使用formTypes數組正確的'Ember'方式。我如何以正確的方式聲明該數組,以便Ember知道如何操縱它? – sturoid

2

正如一個供參考它更容易和更effecient使用setEach如果你在整個集合設置屬性。

@get('formTypes').setEach 'formTypeUsed', true 
+0

謝謝,很高興知道。 – sturoid