<上的applyBindings();选择>正在导致我的subscribe()起火,

applyBindings() on <select> is causing my subscribe() to fire,

本文关键字:我的 subscribe 起火 gt 上的 lt applyBindings 选择      更新时间:2023-09-26

我有一个选择:

<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,选择列表在选项上迭代,并激发我的订阅函数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
});