|
function KnockoutJSRegulator() {
var _numberOfUnloadedViewModels = 0;
this.singletonInstance = null;
var getInstance = function () {
if (!this.singletonInstance) {
this.singletonInstance = createInstance();
}
return this.singletonInstance;
}
var createInstance = function () {
return {
ViewModel: {},
IncreaseNumberOfViewModels: function () { _numberOfUnloadedViewModels++; },
LoadViewModel: function (clientId, storageFieldId) {
var stringViewModel = document.getElementById(storageFieldId).value;
var clientViewModel = ko.utils.parseJson(stringViewModel);
var partOfBigViewModel = {};
this.ViewModel[clientId] = partOfBigViewModel;
for (var propertyName in clientViewModel) {
this.ViewModel[clientId][propertyName] = ko.observable(clientViewModel[propertyName]);
}
$(document.forms[0]).submit(function () {
var newViewModel = {};
for (var propertyName in partOfBigViewModel) {
newViewModel[propertyName] = ko.utils.unwrapObservable(partOfBigViewModel[propertyName]);
}
document.getElementById(storageFieldId).value = ko.utils.stringifyJson(newViewModel);
});
_numberOfUnloadedViewModels--;
if (_numberOfUnloadedViewModels == 0) {
ko.applyBindings(this.ViewModel);
}
}
};
}
return getInstance();
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.