我使用knockout with typescript来构建我的应用程序的UI。如果我的UI中的某些内容发生变化,我想使用敲除绑定来通知我的打字稿。
我的代码有效,但不幸的是只有单向。加载页面后会显示初始值5,但如果我在breakTime输入中更改了某些内容,则永远不会输入subscribe-method。
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);
});
}
我以前从未使用过淘汰的foreach-element,也许错误是由此引起的。我是否必须做其他事情才能使其正常工作?
答案 0 :(得分:5)
您需要从值绑定data-bind="value: breakTime"
原因是如果你使用parens,那么在加载绑定的那一刻,你就会在输入中绑定observable的结果。如果你这样做data-bind="value: 5"
,则完全相同。
如果没有parens,你就会对整个可观察者的价值具有约束力。