Backbone.js单击事件不会触发

时间:2012-08-16 14:13:18

标签: backbone.js backbone-events backbone-views

我一直在努力学习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>

3 个答案:

答案 0 :(得分:1)

您在声明模型时找到元素。如果脚本位于标题中或此内容之前的任何位置,则该元素尚不存在。我不知道在这里使用$('.content')应该有任何合理的理由,只需使用'.content'

编辑:嗯,我看到你也在宣布你的观点的新实例。我不知道该行是否代表您在脚本中的字面意思,或者您只是将其放在那里以展示您的基本用途。我通常在页面逻辑中定义视图和模型(其中包含那些事物的实例),主要是为了让我可以重用它们。

答案 1 :(得分:0)

你可以添加

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

最后,请检查home_view的Dom Element。我认为将视图绑定到Dom元素时会出现问题。

答案 2 :(得分:0)

我发现这为我解决了这个问题:

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

更新 - 比这更好,这样做:

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

然后this.$el将按照上面的帖子说的那样工作