2015-04-03 59 views
0

我正在尋找創建一個文本字段就像使用輸入助手,除了它的行爲略有不同:它不會更新它綁定的屬性直到按下回車鍵。我延長了組件,並試圖重寫可能會更新屬性爲這樣的功能:ember.js:擴展Ember.TextField並只更新輸入密鑰的值屬性

InputTextSoftComponent = Ember.TextField.extend(
    keyPress:-> 
    console.log("keypress") 
    propertyDidChange:-> 
    console.log('propChange') 
    didInsertElement:-> 
    console.log('insert') 
    modelChangedValue:-> 
    console.log('changeval') 

) 

組件工作就像一個普通的文本字段現在,這令我感到驚喜與

{{input-text-soft id="height-input" class="position-inputs" type="text" value=controller.activeRegion.width}} 

然而,我無法停止更新值目標文本字段中的更改。我怎樣才能防止這種情況,並實現一種軟綁定,以便輸入只更新輸入密鑰的屬性?我正在尋找特定於Ember CLI的解決方案和組件的使用。

回答

1

創建不同的綁定屬性。您的不動產的別名。將您的文本框綁定到該屬性。只有在按下回車鍵時才從別名更新房產。僞:

{{input-text-soft id="height-input" realValueBinding="controller.activeRegion.width" value=newWidth...}} 

keyPress() { 
    if (keyCode == xx) 
    this.set('realValue', this.get('newWidth')) 
} 
+0

我試圖避免這一點,所以我不必爲組件外的每個輸入創建'髒'變量。可推測我將不得不復制值activeInition.width並將其放在另一個變量newWidth中,是否正確? – 2015-04-04 17:48:18

+0

哦,也許我可以把組件綁定到一箇中間變量,它被初始化爲realValue的值,所以我不必在 – 2015-04-04 17:52:16

+0

中傳遞值,當然你可以用任何你想要的值初始化newValue。但將textfield值綁定到屬性,將會使該屬性發生更改。所以除了創建一個不同的屬性,如果你不想要改變原來的屬性,沒有別的辦法。 – 2015-04-04 21:59:50