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

Команда jQuery не запускает Ember для обновления значения. Я пробовал .trigger('change'), он тоже не работал.Ember Binding jQuery .val

EDIT: У меня есть таблица на странице. Таблица создается с использованием компонента третьей части (я не могу ее изменить). Я хочу, чтобы Ember узнал, когда пользователь нажимает на строку. Я создал скрытое текстовое поле. Всякий раз, когда пользователь выбирает строку, значение скрытого текстового поля устанавливается на содержимое строки с использованием jQuery.val(). Проблема в том, что Эмбер не признает изменения. Если я сделаю текстовое поле видимым, выберите строку, а затем просто щелкните в любом месте текстового поля, Ember узнает об этом изменении. Таким образом, jQuery.val() не запускает Ember для обновления связанного значения.

+0

Вы не должны установить значение с помощью JQuery в целом, в чем ваш случай использования? – locks

+1

Мое использование: имитация пользовательского ввода в компонентах и ​​интеграция (capybara). – 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

Пожалуйста, не забудьте объяснить, как ваш код решает проблему OP –

1

Вы должны установить значение через this.set('inputValue', 'Enter new value') из компонента/контроллера для изменения вступили в силу

+0

Я не могу. Я привязываю данные к скрытому полю. jQuery устанавливает поле в зависимости от действий пользователя. Но Ember не обновляет значение при использовании jQuery .val(). –

+0

Вы должны предоставить дополнительную информацию/код, чтобы люди могли вам помочь. изменение значения из ember, не приведет к двухсторонней привязке. Вы можете создать скрытое поле, подобное этому {{input type = "hidden" valueBinding = newValue}} '. Если вы используете пользовательские jquery-действия, то что-то вроде этого со слушателем: 'var _this = this; это. $ ('Input'). On ('change', function (e) {_this.set ('inputValue', newValue)}) ' – sidegeeks