淘汰JS选择初始值未在foreach循环中正确显示

时间:2019-04-14 15:14:59

标签: c# asp.net-mvc knockout.js

在某些情况下,我有一个项目列表,对于每个项目,我需要显示一个下拉列表来编辑特定字段

发生的情况是,当我编辑选择并保存时,更改已正确绑定并保存。

但是当我第一次加载页面时,所有选择都反映了第一项(该值将被忽略)

  <tbody data-bind="foreach: Model.Items">

    ///something

          <select data-bind="value: Fieldvalue,options: $root.optionslist,  optionsValue: 'Id', optionsText: 'Name'"></select>

    ///something

  </tbody>

1 个答案:

答案 0 :(得分:0)

这里是一个示例,其中我设置初始值,然后加载DOM并绑定值。它按预期工作。您的问题可能出在您未显示给我们的代码的其他部分。

var viewmodel = function(){
  
  this.Model = {
    Items: [
      {Fieldvalue: ko.observable(2)},
      {Fieldvalue: ko.observable(3)}
    ]
  };
  this.optionslist = [
    {Id: 1, Name: 'option 1'},
    {Id: 2, Name: 'option 2'},
    {Id: 3, Name: 'option 3'}
  ];
};

ko.applyBindings(new viewmodel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>


<div data-bind="foreach: Model.Items">
    <select data-bind="value: Fieldvalue,
                       options: $root.optionslist,  
                       optionsValue: 'Id', 
                       optionsText: 'Name'"></select>
</div>