Knockout-Binding仅适用于One-Way

Phi*_*ger 0 html javascript knockout-2.0 knockout.js typescript

我正在使用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 -->
Run Code Online (Sandbox Code Playgroud)

打字稿代码:

public breakTime: KnockoutObservable<string>;

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

我以前从未使用过淘汰的foreach-element,也许错误是由此引起的.我是否必须做其他事情才能使这个工作?

ian*_*a89 5

您需要从值绑定中删除parensdata-bind="value: breakTime"

原因是,如果使用parens,则在加载绑定时,您将绑定到输入结果的observable.如果你这样做,那就完全一样了data-bind="value: 5".

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