javascript - Knockoutjs 复选框更改事件

标签 javascript mvvm knockout.js knockout-2.0

我有一些复选框绑定(bind)到我的模型中的数组。这很好用,当您选中一个框时,数组会相应更新。

然而,当值发生变化时,我希望在我的模型上调用一个方法来过滤给定新值的结果。我曾尝试连接更改事件,但这似乎具有更改之前的值,而不是更改之后的值。

我已经在 jsfiddle 中说明了我的问题 http://jsfiddle.net/LpKSe/这可能使这更有意义。

为了完整起见,我的代码在这里重复。

JS

function SizeModel() {
    var self = this;
    self.sizes = ko.observableArray(["small", "medium", "large"]);
    self.sizes2 = ko.observableArray(["small", "medium", "large"]);
    self.getResults = function(e) {
        alert(self.sizes());
    };
    self.getResults2 = function(e) {
        alert(self.sizes2());
    };
}

$(document).ready(function() {
    sizeModel = new SizeModel();

    ko.applyBindings(sizeModel);
});​

HTML

<h3>Size
  <input type="checkbox" value="small"  data-bind=" checked: sizes, event:{change: getResults}"/>
  <span class='headertext'>Small</span>
  <input type="checkbox"  value="medium" data-bind=" checked: sizes, event:{change: getResults}"   />
  <span class='headertext'>Medium</span>
  <input type="checkbox"  value="large" data-bind=" checked: sizes, event:{change: getResults}"  />
  <span class='headertext'>Large</span>
</h3>
<h3>Size
 <input type="checkbox" value="small"  data-bind=" checked: sizes2, event:{click: getResults2}"/>
 <span class='headertext'>Small</span>
 <input type="checkbox"  value="medium" data-bind=" checked: sizes2, event:{click: getResults2}"   />
 <span class='headertext'>Medium</span>
 <input type="checkbox"  value="large" data-bind=" checked: sizes2, event:{click: getResults2}"  />
 <span class='headertext'>Large</span>
</h3>

最佳答案

您不需要更改事件。如果您订阅了 observableArray,您将在它发生变化时收到通知,并收到更新后的数组:http://jsfiddle.net/jearles/LpKSe/53/

function SizeModel() {
    var self = this;
    self.sizes = ko.observableArray(["3", "2", "1"]);
    self.sizes.subscribe(function(updated) {
        alert(updated);
    });
}

关于javascript - Knockoutjs 复选框更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177565/

相关文章:

javascript - PouchDB/CouchDB 复制失败,方法不允许

c# - 如何在 ListView 中从 ViewModel 调用命令,其中 ItemsSource 是其他模型类

javascript - 在 Knockouts JS 中对 Observable 数组进行排序

javascript - 如何判断字母是否在字符串中-javascript

javascript - 在 Google Analytics 中,为什么事件标签=(未设置)

java - 避免MVVM模式中的循环

ios - ViewModel 和 Controller 之间通信的最佳方式

binding - knockout.js 递归绑定(bind)

css - 使用函数 knockout CSS 数据绑定(bind)?

Javascript-嵌套列表不会展开