【问题标题】:Value binding in dropdown not being updated after repopulating options in Knockout.js在 Knockout.js 中重新填充选项后,下拉列表中的值绑定未更新
【发布时间】:2021-08-19 12:05:27
【问题描述】:

在我的网站上,我有两个下拉列表:工作用户和合同。更改工作用户后,合同的选项会更新:

Javascript:

function PageViewModel() {
    var self = this;
    self.workuser_id = ko.observable();
    self.contract_id = ko.observable();
    self.selectedWorkuserActiveContracts = ko.observableArray([]);

    self.workuser_id.subscribe( () => {
        $.get('/IncomeReportsApi/Contracts'
              , { workuser_id: self.workuser_id() }
              , (responseData) => {
                  self.activeContractsWithSelectedUser(responseData);
              });
        });

    self.workusers = ko.observableArray([
        { workuser_name: 'loading...', workuser_id: -1, disable: ko.observable(true)},
    ]);
    $.get('/IncomeReportsApi/Workusers', {}, (responseData) => {
        responseData.unshift({ workuser_name: 'select workuser', workuser_id: -1, disable: ko.observable(true) })
        self.workusers(responseData);
    });

HTML:

            <select data-bind="options: $root.workusers
                            , optionsText: 'workuser_name'
                            , optionsValue: 'workuser_id'
                            , selectedOptions: -1
                            , value: workuser_id
                            ">
            </select>
            <select data-bind="options: $root.activeContractsWithSelectedUser
                            , optionsText: 'contract_description'
                            , optionsValue: 'contract_id'
                            , selectedOptions: -1
                            , value: 'contract_id'
                            ">
            </select>

我们遇到了一个奇怪的错误。工作用户下拉列表在更新值的情况下工作得很好。 selectedWorkuserActiveContracts 数组已正确填充选择中的选项。

但是,contract_id 保持未定义,并且在更改下拉列表中的选定选项后不会更新。

我在 StackOverflow 上查看了相关问题,但似乎没有一个是相同的问题。

请帮忙。

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    经过一些调试,我能够自己解决问题。

    问题是我把 observable 的名字加上了撇号。删除它们解决了问题。

    我换了:

    ,value: 'contract_id'
    

    ,value: contract_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 2023-03-20
      • 2012-04-07
      • 1970-01-01
      相关资源
      最近更新 更多