如何在knockout viewmodel中为每个可观察对象添加扩展器
How to add an extender to each observable in knockout viewmodel?
我试图在我的视图模型中添加一个扩展器到我的所有可观察对象。我的数据来自服务器,所以我不能逐一指定属性。
我尝试了这个,但它不工作,我使用logChange扩展器从knockout js网页为本例。
var addingExtender = {
key: function (data) {
return data.id;
},
create: function(options) {
return ko.observable(true).extend({ logChange: "Value Changed" });
}
};
ko.mapping.fromJS(data, addingExtender, self);
我最后做了一个函数来逐个添加扩展器。
function addStorage(koViewModel,name) {
for (var observableKey in koViewModel) {
if (ko.isObservable(koViewModel[observableKey])
&& !isObservableArray(koViewModel[observableKey])) {
koViewModel[observableKey].extend({ persist: name === undefined ?
url + observableKey : url + name + "." + observableKey });
}
if (typeof koViewModel[observableKey] === "object") {
for (var observables in koViewModel[observableKey]) {
if (ko.isObservable(koViewModel[observableKey][observables])
&& !isObservableArray(koViewModel[observableKey][observables])) {
koViewModel[observableKey][observables].extend({ persist: url +
observableKey + "." + observables });
}
}
}
}
}
使用Typescript语法,递归扩展叶观察
extendObservables(vm: object): void {
for (var observableKey in vm) {
if (!vm.hasOwnProperty(observableKey) || observableKey == "__ko_mapping__") {
continue;
}
if (ko.isObservable(vm[observableKey]) && typeof ko.unwrap(vm[observableKey]) === "object") {
this.extendObservables(ko.unwrap(vm[observableKey]));
} else if (ko.isObservable(vm[observableKey])) {
extendObservable(vm[observableKey]);
} else if (typeof vm[observableKey] === "object") {
this.extendObservables(vm[observableKey]);
}
}
}
相关文章:
- 在ko.applyBindings(..)中执行Knockout js订阅函数(用于可观察对象)
- Knockout.js用单个json对象绑定一个可观察对象
- 根据某些条件将 JS 绑定到可观察对象内的数组元素
- 如何从挖空可观察对象中获取所选项目的文本
- 从另一个可观察对象获取价值的最佳方法,而无需组合最新
- 可观察对象的角 2 条件链接
- 观察对象是否已更改
- 如何在 angularjs 中观察对象中的对象
- 将通过原型计算的可观察对象添加到构造函数中
- 挖空解包可观察对象无法按预期工作
- 如何从可观察对象数组中删除项目
- 使用 Knockout 和 Typescript.如何从订阅中更改可观察对象的值
- Knockout+Moment.js–更新可观察对象内的相对日期
- 在AngularJS中观察对象
- 角度,观察对象中的特定关键点
- 微风导航阵列成员是淘汰赛中的可依赖观察对象
- 在knockout.js中为可观察对象添加属性后为什么出现TypeError
- Knockout js,访问循环外的可观察对象
- 敲除:绑定到同一可观察对象的几个 DOM 元素
- KnockoutJS-一个计算可写的可观察对象;无法正确更新绑定