Javascript 更新KnockoutJS关联ObservalArray值
这应该很简单 我有一个带有名称和布尔值的关联可观察数组Javascript 更新KnockoutJS关联ObservalArray值,javascript,knockout.js,associative-array,Javascript,Knockout.js,Associative Array,这应该很简单 我有一个带有名称和布尔值的关联可观察数组 this.items = ko.observableArray([ { name: "name1", boolVal: true }, { name: "name2", boolVal: true }, ]); 然后用一个简单的函数来改变布尔值 this.changeValue = function (item) { item.boolVal = false; }; 当我调用changeValue函数时,bool
this.items = ko.observableArray([
{ name: "name1", boolVal: true },
{ name: "name2", boolVal: true },
]);
然后用一个简单的函数来改变布尔值
this.changeValue = function (item) {
item.boolVal = false;
};
当我调用changeValue函数时,boolVal确实会更改,请参阅JSFIDLE中的console.logdata,但视图不会更新。屏幕上的值保持为真。关于KnockoutJS是如何工作的,我一定做出了错误的假设
为了更新用户界面,您需要具有可观察的属性:
this.items = ko.observableArray([
{ name: "name1", boolVal: ko.observable(true) },
{ name: "name2", boolVal: ko.observable(true) },
]);
并将其设置为:
this.changeValue = function (item) {
item.boolVal(false);
};
ko.array仅跟踪项目的添加和删除。因此,如果其中一个项目发生更改,它不会通知UI。为此,您需要在项目上观察到ko
演示为了更新用户界面,您需要具有可观察的属性:
this.items = ko.observableArray([
{ name: "name1", boolVal: ko.observable(true) },
{ name: "name2", boolVal: ko.observable(true) },
]);
并将其设置为:
this.changeValue = function (item) {
item.boolVal(false);
};
ko.array仅跟踪项目的添加和删除。因此,如果其中一个项目发生更改,它不会通知UI。为此,您需要在项目上观察到ko
Demo没有想到这一点,但它很有意义。谢谢这个答案并没有回答关联数组是可观测的问题。这只是一个标准数组。我没有想到,但它很有意义。谢谢这个答案并没有回答关联数组是可观测的问题。这只是一个标准阵列。