0

コードはhttp://jsfiddle.net/cTpPx/にありますが、ライブの例はhttp://fiddle.jshell.net/cTpPx/show/でご覧ください。これは、URL の変更を確認していただくためです。

このページにアクセスするときは、Chrome キャッシュを無効にしてください (組み込みの Chrome デバッガー ツールで関連するボックスにチェックを入れ、テスト中にデバッガーを選択しないでください)。

ページを開くと、hastag が#!latest期待どおりに変更されていることがわかりますが、実行されると空のルートcan.route.ready(true)に戻ります。#!なぜそのような奇妙な行動があるのですか?

ただし、このページのキャッシュがある場合は機能します。

4

1 に答える 1

2

これはタイミングの問題だと確信しています。コントロールを初期化し、ルート変更イベントですぐにルートを設定します。ハッシュの設定を延期すると、機能します: http://jsfiddle.net/cTpPx/2/

var AppController = can.Control({

    'route': function(){
        log('route empty');
        setTimeout(function() {
            window.location.hash = '#!latest';
        }, 10);
    },

    'latest route': function() {
        log('route: /latest');
    }

});
于 2013-04-30T14:08:14.467 に答える