Knockout-Binding仅适用于One-Way

时间:2014-11-20 14:09:15

标签: javascript html knockout.js typescript knockout-2.0

我使用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,也许错误是由此引起的。我是否必须做其他事情才能使其正常工作?

1 个答案:

答案 0 :(得分:5)

您需要从值绑定data-bind="value: breakTime"

删除parens

原因是如果你使用parens,那么在加载绑定的那一刻,你就会在输入中绑定observable的结果。如果你这样做data-bind="value: 5",则完全相同。

如果没有parens,你就会对整个可观察者的价值具有约束力。