knockout.js:如何更新列表(调用服务器)作为用户更改的过滤器值

时间:2012-05-10 18:38:23

标签: jquery knockout.js ko.observablearray

我有一个从服务器(AJAX + JSON)获取的项目列表,以及过滤列表的此项目的状态过滤器。我想要在更改过滤器值时更新列表(发布新的Ajax请求)。请帮忙

  <select data-bind="options: statuses, value: selectedStatus">
  ...
 <table>
   <tbody data-bind="foreach: items">
   ...
   </tbody>
 </table>

 function Model() {
      var self = this;
      self.items =  ko.observable();
      self.statuses = ko.observable();
      self.selectedStatus = ko.observable();
 }

更新:其中一种方法是在模型中订阅selectedStatus更改,如下所示:

self.SelectedStatus.subscribe(function () {
            $.getJSON(...)
});

这是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

其中一种可能的方法是使用 Computed Observables

Short Example

因此,您可以在选择的值更改后更新商品。

答案 1 :(得分:1)

另一种组织更新的方法 - 只需创建一个触发器计算的observable,它将调用将更新列表的函数

See example

但我不确定这是最好的方式..我认为订阅是最简单的方法,但是不要忘记关于ajax请求的loker!