<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
});