嗨,我是构建网页应用程序的新手,我从 John Papa 的 HotTowel 视频开始,最初使用的是 HotTowel VSIX 模板。
当我决定更新到 Durandal 2.0 时,我遇到了应用程序无法从 shell 模块中的 activate 方法继续执行的问题。
经过一些谷歌搜索后,我发现问题必须与使用 jquery 承诺的 durandal 相关,我已经尝试了http://durandaljs.com/documentation/Q/中宣布的修复程序, 但它不起作用,有人能给我一些启示吗关于这个问题。
PS:我是 js 和 web 的新手,所以如果问题不够清楚,我很抱歉
在我的 shell.js 中,我有:
function activate() {
app.title = config.appTitle;
return datacontext.primeData()
.then(boot)
.fail(failedInitialization);
}
function boot() {
logger.log('CodeCamper Backend Loaded!', null, system.getModuleId(shell), true);
router.map(config.routes).buildNavigationModel();
return router.activate();
}
function addSession(item) {
router.navigateTo(item.hash);
}
function failedInitialization(error) {
var msg = 'App initialization failed: ' + error.message;
logger.logError(msg, error, system.getModuleId(shell), true);
}
在我的数据上下文中:
var primeData = function () {
var promise = Q.all([
getLookups(),
getSpeakerPartials(null, true)])
.then(applyValidators)
return promise
.then(success);
function success() {
datacontext.lookups = {
rooms: getLocal('Rooms', 'name', true),
tracks: getLocal('Tracks', 'name', true),
timeslots: getLocal('TimeSlots', 'start', true),
speakers: getLocal('Persons', orderBy.speaker, true)
};
log('Primed data', datacontext.lookups);
}
function applyValidators() {
model.applySessionValidators(manager.metadataStore);
}
};