【问题标题】:Pushing to knockout observable array doesn't update select?推动淘汰可观察数组不会更新选择?
【发布时间】:2015-09-26 22:15:12
【问题描述】:

我正在尝试找出 Knockout,但在将新值推送到它所连接的可观察数组后,我无法让下拉列表更新。请告诉我我做错了什么?

简单示例:

<!DOCTYPE html>
<html>
  <head>
    <script src="js/knockout-3.3.0.min.js"></script>
    <script>
      function ViewModel() {
        var self = this;
        self.items = ko.observableArray([
          {'id':1,'name':'item #1'},
          {'id':2,'name':'item #2'},
          {'id':3,'name':'item #3'}
        ]);
        self.addItem = function(id, name) {
          self.items().push({'id':id,'name':name});
        };
      };
    </script>
  </head>
  <body>
    <select id="items" 
      data-bind="options: items,
      optionsText: 'name',
      optionsValue: 'id'"></select>
    <script>
      var vm = new ViewModel();
      ko.applyBindings(vm);
      vm.addItem(4, 'item #4');
    </script>
  </body>
</html> 

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    您将项目推送到底层数组而不是observableArray。要推送一个项目以便 Knockout 知道推送了某个内容,您只需执行以下操作:self.items.push({'id': id, 'name': name});

    文档:http://knockoutjs.com/documentation/observableArrays.html

    【讨论】:

    • 谢谢你,成功了!
    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 2013-05-01
    • 2014-08-22
    • 2012-09-08
    • 2012-12-22
    • 2021-09-19
    • 2015-10-05
    相关资源
    最近更新 更多