2015-05-22 27 views
1

我建立一個組件的模板:屬性在組件不傳播到

export default Ember.Component.extend({ 
    tagName:'input', 
    classNameBindings: ['form-control','isMissing:input-warning',':form-control'], 
    isMissing: false, 
    attributeBindings: ['customType:type','customSize:size','value','disabled','placeholder'], 
    customType: "text", 
    customSize: "50", 
    valueBinding:'name', 
    disabled:'disabled', 
    placeholder:'placeholder', 

    focusIn:function(){ 
    this.sendAction('submit'); 
    }, 
    focusOut:function(){ 
    this.sendAction('cancel'); 
    } 
}); 

會發生什麼是綁定的屬性「值」(見代碼第5行,第4列)似乎得到每當傳播從模板傳遞到組件時'name'的值,而不是相反。

我錯過了什麼嗎?我讀了關於組件的Ember文檔,這個屬性綁定應該在兩個方向傳播屬性值的變化。

有沒有其他方法來綁定這個值?

謝謝!

編輯:

這裏有一個JSBIN顯示問題:http://emberjs.jsbin.com/jalalamude/1/edit?html,js,output

+1

你可以在emberjs.jsbin.com創建一個失敗bin – blessenm

+0

如果模板沒有更新,這可能是因爲當你改變屬性時不使用ember setter。 'this.set('blah','blahblah');' – carter

+0

嘿,我剛剛編輯了這個帖子,並添加了一個JsBin來顯示問題是如何工作的。 – Nico

回答

1

那麼你要明白,表單輸入元素是從灰燼輸入助手不同,輸入傭工維持綁定當值被改變,你的組件需要做同樣的事情。你的組件正在做什麼,是創建一個輸入元素,其值被設置爲組件中的任何'value'屬性,組件呈現該元素,然後不關心用戶如何處理它 - 點沒有實際組件的value屬性和「form」輸入元素之間的「TIE UP」。你有責任這樣做。這裏是一個工作jsbin:http://emberjs.jsbin.com/muduxacanu/1/edit