0

こんにちは、Web ページ アプリケーションの作成は初めてです。John Papa の HotTowel ビデオから始め、最初は HotTowel VSIX テンプレートを使用しました。

Durandal 2.0 にアップデートすることにしたとき、シェル モジュールの activate メソッドからアプリケーションが進まないという問題に直面しました。

いくつかのGoogle検索の後、問題は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);
        }

    };
4

1 に答える 1

0

最初のルートを有効にするには、ルートを router.activate() 関数に渡す必要があります。それは2つのことを前提としています-

  1. promise が返されているため、codecamper バックエンド メッセージが発火しています
  2. 参照したページに示されている Q マップに延期された jQuery を追加しました。

上記の 2 つが当てはまらない場合は、実際に 2 を実行したかどうか、アプリケーションが一時停止またはロードされていない場所を教えてください。

于 2013-08-28T12:08:08.113 に答える