Observable的设置值在Knockout中不更新

(每天都有很多问题需要回答,为什么我不能设置可观察值的值,而不是有太多不同的答案,说同样的事情,我想创build一个问题以供大家参考)

Knockout Observable / Observable Array的设置值不会更新

设置我可观察的observableArray的值不更新!

将项目添加到Observable数组

为什么我不能将一个项目添加到我的Knockout可观察数组中?

Knockout Observable / Observable Array的设置值不会更新

你需要使用setter函数来更新你的observable / observableArray的值 –

防爆。 1(可观察) –

var name = 'John'; var myValue = ko.observable(); myValue(name); // Set myValue equal to John, update any subscribers var newObservable = ko.observable('Bill'); myValue(newObservable()); // Set myValue equal to the value of newObservable, which is Bill 

防爆。 2(observableArray) –

 var names = ['John', 'William', 'Dave']; var myArray = ko.observableArray(); myArray(names); // Set myArray equal to the array of names John, update any subscribers var newArray = ko.observableArray(['Sanford']); myArray(newArray()); // Makes a clone of the array 

注意看这个问题,了解为什么这可能不是你正在做的 – 在knockoutJS中克隆/复制一个observablearray的最好方法是什么?

将项目添加到Observable数组

您需要将项目推入observableArray, 而不是 observableArray的基础值 –

 var name = 'John'; var myValue = ko.observable(name); var myArray = ko.observableArray(); myValue.push(myValue()); // Add myValue to my observableArray** 

创build一个模型在视图模型中使用/共享

您可以创build一个可用于您的视图模型的可重复使用的模型。 这与使用C#中的类来创build具有共同属性的对象类似。

 function objectModel(item) { var self = this; self.Name = ko.observable(item.name); self.Description = ko.observable(item.description); } 

可以创build像 –

 var object = { name: 'John', description: 'a person' } var john = new objectModel(object); 

这也可以通过参数来完成,而不仅仅是对象 –

 function objectModel(name, description) { var self = this; self.Name = ko.observable(name); self.Description = ko.observable(description); } var john = new objectModel('John', 'a person');