0
- 我有哪里KO已经被注册的页面,并有一个与观察到的财产“someProperty”一个视图模型;
- 我通过ko.isObservable(viewmodel.someProperty)检查“someProperty”是可观察属性 - 它返回'true';
- 我做ajax调用以获得一些html标记,其中KO也被注册了;
- 现在,如果您检查ko.isObservable(viewmodel.someProperty),它将返回false;
另外所有手动添加的KO扩展名都会丢失。它看起来像jQuery中的bug(或功能)(http://bugs.jquery.com/ticket/10066)。
var viewModel = new function() {
var self = this;
this.serverData = {
Controller: ko.observable(null),
Enabled: ko.observable(false),
Id: ko.observable(null),
ParentId: ko.observable(null),
Title: ko.observable(null),
MaterialId: ko.observable(null),
Alias: ko.observable(null)
};
this.treeData = {
tree: ko.observable(null),
node: ko.observable(null)
};
this.submit = submit;
this.cancel = cancel;
this.openMaterials = menuOptions.openMaterials;
}
// ...
var data = ko.utils.createUnobservable(viewModel.serverData);
// ...
(function(ko) {
ko.utils = ko.utils || {};
ko.utils.createUnobservable = function(observable) {
var unobservable = {};
(function() {
for (var propertyName in observable) {
var observableProperty = observable[propertyName];
if (ko.isObservable(observableProperty) /* always 'false' after ajax */) {
unobservable[propertyName] = observableProperty();
}
}
})();
return unobservable;
};
})(ko = ko || {});
感谢您的回答。很明显,我已经考虑过了,但是这是一种解决方法。但无论如何,这是参考脚本库的正常行为吗? – SamousPrime 2013-03-05 21:31:53
我认为这是正常行为。 – 2013-03-06 00:51:39