PW *_*Kad 6 javascript mvvm knockout.js
(每天都有大量的问题链接回原因为什么我不能设置我的观察值,而不是有这么多不同的答案说同样的事情,我想创建一个问题,以回顾每个人)
设置我的observable observableArray的值不会更新!
为什么我不能将项添加到我的Knockout可观察数组中?
您需要使用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
Run Code Online (Sandbox Code Playgroud)
防爆.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
Run Code Online (Sandbox Code Playgroud)
注意请参阅此问题以了解为什么这可能不是您要做的 - 在knockoutJS中克隆/复制observablearray的最佳方法是什么?
您需要将项目推送到observableArray,而不是 observableArray 的基础值 -
var name = 'John';
var myValue = ko.observable(name);
var myArray = ko.observableArray();
myValue.push(myValue()); // Add myValue to my observableArray**
Run Code Online (Sandbox Code Playgroud)
您可以创建可在模型中使用的可重用模型.这类似于在C#中使用类来创建具有公共属性的对象.
function objectModel(item) {
var self = this;
self.Name = ko.observable(item.name);
self.Description = ko.observable(item.description);
}
Run Code Online (Sandbox Code Playgroud)
哪个可以像 -
var object = {
name: 'John',
description: 'a person'
}
var john = new objectModel(object);
Run Code Online (Sandbox Code Playgroud)
这也可以通过参数而不仅仅是对象来完成 -
function objectModel(name, description) {
var self = this;
self.Name = ko.observable(name);
self.Description = ko.observable(description);
}
var john = new objectModel('John', 'a person');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9949 次 |
| 最近记录: |