2014-11-20 3 views
0

Я использую нокаут с машинописным текстом для создания пользовательского интерфейса моего приложения. Я хочу использовать привязку для нокаута, чтобы уведомить мой машинописный текст, если что-то изменится в моем пользовательском интерфейсе.Нокаут-привязка работает только в одностороннем порядке

Мой код работает, но, к сожалению, только в одностороннем порядке. Начальное значение 5 отображается после загрузки страницы, но если я что-то изменяю во входе breakTime, метод subscribe никогда не вводится.

Массив selectedDates содержит объекты, которые содержат свойства breakTime.

HTML-код:

<!-- ko 'foreach': $root.selectedDates--> 
<td> 
    <input type="text" name="breakTime" data-bind="value: breakTime()" class="bookingTextBox" /> 
</td> 
<!-- /ko --> 

Машинопись код:

public breakTime: KnockoutObservable<string>; 

constructor(date: Date, viewModel: Booking.BookingViewModel) {  
    this.breakTime = ko.observable("30"); 
    this.breakTime.subscribe((newValue) => { 
     alert(newValue); 
    }); 
} 

Я никогда не работал с нокаутом Еогеаспом-элементом раньше, может быть, ошибка вызвана тем, что. Должен ли я сделать что-то еще, чтобы получить эту работу?

ответ

5

Вы должны удалить Паренс от значения связывания data-bind="value: breakTime"

Причины заключается в том, что если вы используете скобки ваши являются обязательными для ввода результата наблюдаемых в момент, когда загружается связывание. Точно так же, если вы делаете это data-bind="value: 5".

Без парнеров вы привязываетесь к стоимости всего наблюдаемого.

+1

Только что собрал [скрипку для демонстрации этого] (http://jsfiddle.net/kL3awr1w/) –

+1

Все может быть так просто. Работы, тх. –

+0

@PhilippEger отлично, вы понимаете, почему? – ianaya89