Backbone js:事件没有解雇问题

时间:2011-10-03 19:06:39

标签: jquery backbone.js

单击按钮后,事件如何触发?

var test1 = new Test({ Name: "Test 1", id: 1 });
var test2 = new Test({ Name: "Test 2", id: 2 });
var test3 = new Test({ Name: "Test 3", id: 3 });
var tests = new TestCollection([test1, test2, test3]);

TestView = Backbone.View.extend({
    initialize: function () {
        this.render();
    },
    events:
    {
        "click .btn": "clickbtn"
    },
    render: function () {
        $("#tests_template").tmpl(tests.toJSON()).appendTo("#tests_list");
        this.delegateEvents();
        return this;
    },
    clickbtn: function () {
        alert('test');
    }
});

var testView = new TestView();

<script id="tests_template" type="text/x-jquery-tmpl">    
    <li> 
    <b>${Name}</b><input type="button" id="btn" value="click" class="btn"/>
    </li> 
</script>

<ul id="tests_list">
</ul>

1 个答案:

答案 0 :(得分:3)

events声明适用于您视图的el元素。现在,您的代码直接将html输出附加到视图el之外的其他内容。

这将解决它:


TestView = Backbone.View.extend({
    initialize: function () {
        this.el = $("#tests_list");
        this.render();
    },
    events:
    {
        "click .btn": "clickbtn"
    },
    render: function () {
        var html = $("#tests_template").tmpl(tests.toJSON());
        $(this.el).append(html)
        return this;
    },
    clickbtn: function () {
        alert('test');
    }
});