【问题标题】:Knockout update cell value in table剔除更新表格中的单元格值
【发布时间】:2013-10-08 04:14:57
【问题描述】:

当我更改 B 列中的选择时,A 列中的文本也应该更改,但不会更改。 为什么?

HTML:

    <table>
    <thead>
        <tr>
            <th style="width: 100px;">A</th>
            <th style="width: 100px;">B</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: Data">
        <tr>
            <td><span data-bind="text: idOpt"></span></td>
            <td><select data-bind="options: $root.MyOptions, optionsText: 'name', optionsValue: 'id', value: idOpt"></select></td>
        </tr>
    </tbody>
</table>

JS:

function AppViewModel() {
   var self = this;
   self.MyOptions = ko.observableArray([
       {id: 'a1', name: 'One'},
       {id: 'a2', name: 'Two'},
       {id: 'a3', name: 'Three'}
   ]);

   self.Data = ko.observableArray([
       {idOpt: 'a1'},
       {idOpt: 'a2'},
       {idOpt: 'a1'}
   ]);
}

var vm = new AppViewModel();
ko.applyBindings(vm);

http://jsfiddle.net/bnowicki/CrVBr/2/

请帮忙。

【问题讨论】:

    标签: arrays binding knockout.js


    【解决方案1】:

    如果您希望它们绑定/更新,您必须将 Data 数组中的项目声明为可观察对象。

    function AppViewModel() {
       var self = this;
       self.MyOptions = ko.observableArray([
           {id: 'a1', name: 'One'},
           {id: 'a2', name: 'Two'},
           {id: 'a3', name: 'Three'}
       ]);
    
       self.Data = ko.observableArray([
           {idOpt: ko.observable('a1')},
           {idOpt: ko.observable('a2')},
           {idOpt: ko.observable('a1')}
       ]);
    }
    
    var vm = new AppViewModel();
    ko.applyBindings(vm);
    

    Knockout 文档向您展示了使用普通模型和使用 observables 的模型之间的区别http://knockoutjs.com/documentation/observables.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多