javascript - 更新 Knockout.js Observable 数组元素值

标签 javascript knockout.js

我需要更新可观察的数组元素值。 可观察数组是类对象的集合。 首先我需要通过 id 找出匹配的对象并更新该对象的一些其他属性值。

var Seat = function(no, booked) {
    var self = this;
    self.No = ko.observable(no);
    self.Booked = ko.observable(!!booked);

    // Subscribe to the "Booked" property
    self.Booked.subscribe(function() {
        alert( self.No() );
    });
};

var viewModel = {
    seats: ko.observableArray( [
        new Seat(1, false), new Seat(2, true), new Seat(3, true),
        new Seat(4, false), new Seat(5, true), new Seat(6, true),
        new Seat(7, false), new Seat(8, true), new Seat(9, true)
    ] )
};

有人可以建议更新 View 模型的方法吗? 假设我想将 2 号座位的预订值(value)更新为“false”。

http://jsfiddle.net/2NMJX/3/

最佳答案

knockout 非常简单:

// We're looking for the Seat with this No 
var targetNo = 2;

// Search for the seat -> arrayFirst iterates over the array and returns the
// first item that is a match (= callback returns "true")!
var seat = ko.utils.arrayFirst(this.seats(), function(currentSeat) {
    return currentSeat.No() == targetNo; // <-- is this the desired seat?
});

// Seat found?
if (seat) {
    // Update the "Booked" property of this seat!
    seat.Booked(true);
}

http://jsfiddle.net/2NMJX/4/

关于javascript - 更新 Knockout.js Observable 数组元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11246494/

相关文章:

javascript - 使用 javascript 技巧编辑网页 - 如何 "unedit"?

javascript - Knockout 计算创建了写入但未读取的可观察对象的依赖关系

javascript - Knockout 或其他 JavaScript 来添加/删除对象的属性

在 KnockoutJS 中更改模型数据时发生 Javascript 内存泄漏

javascript - Knockout.js 未正确设置选择选项

javascript - Sequelize create 方法忽略验证规则

javascript - 错误 : Cannot find module '../lib/cli'

javascript - 具有特定类的 JQuery 祖先 td 选择器

javascript - 最大高度变化的 CSS 动画

jquery - 使用knockout js在Jquery中自动完成