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');