簡單的問題,很確定這是一個複雜的答案:)durandal(HotTowel)視圖模型的繼承?
是否有可能實現Durandal視圖模型的某種形式的繼承?
所以,如果你有一個視圖模型是這樣的:
define(['durandal/app', 'services/datacontext', 'durandal/plugins/router', 'services/logger'],
function (app, datacontext, router, logger) {
var someVariable = ko.observable();
var isSaving = ko.observable(false);
var vm = {
activate: activate,
someVariable : someVariable,
refresh: refresh,
cancel: function() { router.navigateBack(); },
hasChanges: ko.computed(function() { return datacontext.hasChanges(); }),
canSave: ko.computed(function() { return datacontext.hasChanges() && !isSaving(); }),
goBack: function() { router.navigateBack(); },
save: function() {
isSaving(true);
return datacontext.saveChanges().fin(function() { isSaving(false); })
},
canDeactivate: function() {
if (datacontext.hasChanges()) {
var msg = 'Do you want to leave and cancel?';
return app.showMessage(msg, 'Navigate Away', ['Yes', 'No'])
.then(function(selectedOption) {
if (selectedOption === 'Yes') {
datacontext.cancelChanges();
}
return selectedOption;
});
}
return true;
}
};
return vm;
//#region Internal Methods
function activate(routeData) {
logger.log('View Activated for id {' + routeData.id + '}, null, 'View', true);
});
}
//#endregion
function refresh(id) {
return datacontext.getById(client, id);
}
});
是否有可能作出這樣陷入某種基本類型,並從它繼承進一步的ViewModels,能夠延長要求清單等?
還有另外一個問題,但視圖模型看起來與我爲durandal/HotTowel構建的視圖模型不太一樣。
謝謝。
嗨埃文。道歉我還沒有回到這個這麼久。題;在你的方法上,你能擴展注入的服務嗎?因此,在你的基地,你有應用程序,的datacontext等,在孩子[viewModelBase。你可以簡單的擴展,與([viewModelBase],「服務/服務1」,「服務/服務2」,函數(vmbase,服務1,serivce2)? – Adam
用JavaScript有各類圍繞着如何做的遺傳模式。他們都有他們的好處和一些比其他更復雜我只是谷歌JavaScript原型繼承,並找到適合您的方案的解決方案。 –