2016-01-13 60 views
1
{{input value=inputValue}} 
$("input").val("Test"); 

jQuery命令不會觸發Ember更新值。我試過.trigger('change')它也沒有工作。Ember綁定jQuery .val

編輯:我在頁面上有一張桌子。該表是使用第三部分組件創建的(我無法更改它)。我希望Ember知道用戶何時點擊一行。我創建了一個隱藏文本字段。每當用戶選擇一行時,隱藏文本字段的值將使用jQuery.val()設置爲該行的內容。問題是Ember沒有意識到這種變化。如果我使文本框可見,請選擇一行,然後只需單擊文本框中的任意位置,Ember就會識別該更改。所以jQuery.val()不會觸發Ember更新綁定值。

+0

你不應該設置與jQuery普遍的價值,什麼是你的使用情況? – locks

+1

我的用例:模擬組件和集成(水豚)測試中的用戶輸入。 – Hannele

回答

-1
this.$('#table').on("click", function() { 
    var selected = this.$('#table tr.selected')[0]; 
    var text = selected.innerText.split("\t"); 
    this.$(this.get('columns')).each(function(i) { 
    var column = this.get('columns')[i]; 
    this.set(column.title, text[i]); 
    }); 
}); 
+0

請確保解釋您的代碼如何解決OPs問題 –

1

你應該從組件/控制器設置爲通過this.set('inputValue', 'Enter new value')值,以使更改生效

+0

我不行。我將數據綁定到隱藏字段。 jQuery根據用戶操作設置字段。但是當你使用jQuery .val()時,Ember不會更新這個值。 –

+0

你應該提供更多的信息/代碼讓人們能夠幫助你。改變來自ember的值,不會觸發雙向綁定。您可以像這樣創建一個隱藏字段。{{input type =「hidden」valueBinding = newValue}}'。如果你使用自定義的jquery動作,那麼就像這樣一個監聽器:var _this = this; ('change',function(e){_this.set('inputValue',newValue)})' – sidegeeks