<select> 上的 applyBindings() 导致我的 subscribe() 触发,
applyBindings() on <select> is causing my subscribe() to fire,
我有一个select:
<select class="form-control" data-bind="value: title.value, foreach: title.choices">
<option data-bind="text: name, value: code"></option>
</select>
与 Js:
self.title.choices = [
{ "code": "", "name": "" },
{ "code": "MR", "name": "Mr" },
{ "code": "MRS", "name": "Mrs" }
]
self.title.value = ko.observable('').extend({
required: true
});
self.title.value.subscribe(function (newValue) {
self.gender.value('male');
});
然后我调用 applyBindings,select 列表遍历选项,并触发我的订阅函数 3 次(每个选项 1 次)。然后它恼人地更新了我的其他可观察对象,我怎样才能防止这种情况发生?
改为使用 options
绑定。
<select class="form-control" data-bind="value: title.value,
options: title.choices,
optionsText: 'code',
optionsValue: 'name',
optionsCaption: ''">
</select>
self.title.choices = [
{ "code": "MR", "name": "Mr" },
{ "code": "MRS", "name": "Mrs" }
];
self.title.value = ko.observable('').extend({
required: true
});
我有一个select:
<select class="form-control" data-bind="value: title.value, foreach: title.choices">
<option data-bind="text: name, value: code"></option>
</select>
与 Js:
self.title.choices = [
{ "code": "", "name": "" },
{ "code": "MR", "name": "Mr" },
{ "code": "MRS", "name": "Mrs" }
]
self.title.value = ko.observable('').extend({
required: true
});
self.title.value.subscribe(function (newValue) {
self.gender.value('male');
});
然后我调用 applyBindings,select 列表遍历选项,并触发我的订阅函数 3 次(每个选项 1 次)。然后它恼人地更新了我的其他可观察对象,我怎样才能防止这种情况发生?
改为使用 options
绑定。
<select class="form-control" data-bind="value: title.value,
options: title.choices,
optionsText: 'code',
optionsValue: 'name',
optionsCaption: ''">
</select>
self.title.choices = [
{ "code": "MR", "name": "Mr" },
{ "code": "MRS", "name": "Mrs" }
];
self.title.value = ko.observable('').extend({
required: true
});