Manageing subsequent view models e.g. LoginViewModel, HomeViewModel etc. ko.computed() appears on the Scene amongst others.
self.loading = ko.computed(function () {
return self.view() === self.Views.Loading;
});
// Data
self.Views = {
Loading: {} // Other views are added dynamically by app.addViewModel(...).
};
self.view = ko.observable(self.Views.Loading);
self.loading = ko.computed(function () {
return self.view() === self.Views.Loading;
});
// Other operations
self.addViewModel = function (options) {
var viewItem = {},
navigator;
// Add view to AppViewModel.Views enum (for example, app.Views.Home).
self.Views[options.name] = viewItem;
// Add binding member to AppViewModel (for example, app.home);
self[options.bindingMemberName] = ko.computed(function () {
if (self.view() !== viewItem) {
return null;
}
return new options.factory(self, dataModel);
});
if (typeof (options.navigatorFactory) !== "undefined") {
navigator = options.navigatorFactory(self, dataModel);
} else {
navigator = function () {
self.errors.removeAll();
self.view(viewItem);
};
}
// Add navigation member to AppViewModel (for example, app.NavigateToHome());
self["navigateTo" + options.name] = navigator;
};
Keine Kommentare:
Kommentar veröffentlichen