0

backbone.js を学習しようとしていますが、ホーム リンクをクリックしたときにクリック イベントが発生しない理由がわかりません。私はバックボーンにかなり慣れていないので、何が欠けているのかわからないのですか? ネットでさまざまなチュートリアルを調べましたが、抜け穴が見つからないようです。助けてください!

Backbone.js

    var HomeView = Backbone.View.extend({
        el: $('.content'),

        events:{
            "click #home": "animateNavigation"
        },
        initialize: function(){
            _.bindAll(this, 'displayTrips'); 

            // Add the model collections
            this.collection = new ModelList();
            this.collection.bind('add', this.displayTrips); // Collection event binder
        },
        animateNavigation: function(){
            alert('test');

            return false;
        },
        displayTrips: function(params){
            var items = params.get('data');
        }
    });

    var home_view = new HomeView();

HTML

<div class="content">
     <div class="left">
        <ul>
            <li>
                <div class="nav_arrow"></div>                   
                <a href="home" class="active" id="home">
                    <img alt="Home" src="/assets/img/nav/left/star.png">
                    <span>Home</span>
                </a>
            </li>
            <li>
                <a href="tropical" id="tropical">
                    <img alt="Tropical" src="/assets/img/nav/left/fins_grey.png">
                    <span>Tropical</span>
                </a>
            </li>
        </ul>
    </div>
</div>
4

3 に答える 3

1

モデルが宣言された時点で要素を見つけています。ヘッダーまたはこのコンテンツの前にスクリプトがある場合、その要素はまだ存在しません。$('.content')とにかくここで使用する正当な理由があるべきかどうかはわかりません。ただ使用してください'.content'

編集:そうですね、ビューの新しいインスタンスも宣言しているようです。その行がスクリプトにあるものを文字通り表しているのか、それとも基本的な使用法を示す目的でそこに置いているのかはわかりません。私は通常、ビューとモデルをページ ロジック (それらのインスタンスを持つ) の別の場所に定義します。これは主に、それらを再利用できるようにするためです。

于 2012-08-16T14:34:32.260 に答える
0

これで解決したことがわかりました:

var home_view = new HomeView({el:$('.content')});

更新 - それよりも、次のようにします。

var home_view = new HomeView({el:'.content'});

this.$el上記の投稿が言うように動作します

于 2012-11-30T17:05:48.360 に答える
0

追加していただけますか

console.log(home_view.$el.html());

最後に、home_view の Dom 要素を確認してください。ビューを Dom 要素にバインドするときに何か問題が発生したと思います。

于 2012-08-16T14:28:36.533 に答える