我正在使用带有 typescript 的 knockout 来构建我的应用程序的 UI。如果我的 UI 中的某些内容发生变化,我想使用 knockout 绑定(bind)来通知我的 typescript 。
我的代码可以工作,但不幸的是只能以一种方式。初始值 5 在页面加载后显示,但如果我更改了breakTime输入中的某些内容,则永远不会输入订阅方法。
selectedDates 数组包含包含breakTime 属性的对象。
HTML 代码:
<!-- ko 'foreach': $root.selectedDates-->
<td>
<input type="text" name="breakTime" data-bind="value: breakTime()" class="bookingTextBox" />
</td>
<!-- /ko -->
typescript 代码:
public breakTime: KnockoutObservable<string>;
constructor(date: Date, viewModel: Booking.BookingViewModel) {
this.breakTime = ko.observable("30");
this.breakTime.subscribe((newValue) => {
alert(newValue);
});
}
我以前从未使用过 foreach-element 的 knockout ,也许错误就是由此引起的。我还需要做其他事情才能使其正常工作吗?
最佳答案
您需要从值绑定(bind)中删除括号data-bind="value:breakTime"
原因是,如果您使用括号,您将绑定(bind)到输入,即加载绑定(bind)时可观察到的结果。如果您执行此操作,则效果完全相同 data-bind="value: 5"
。
如果没有括号,您必须对整个可观察值进行赋值。
关于javascript - knockout 绑定(bind)仅适用于单向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27041611/