javascript - Backbone.js 事件未触发

标签 javascript backbone.js

我尝试在我的一个项目中使用 Backbone.js,但在使用 View 事件时遇到问题。

HTML 文件:

<html>
    <head>
        <script type="text/javascript" src="underscore-min.js"></script>
        <script type="text/javascript" src="backbone-min.js"></script>
        <script type="text/javascript" src="model.js"></script>
    </head>
    <body>
        <div id="app">
        </div>
    </body>
</html>

model.js 代码是

window.onload = function() {
    var MyModel = Backbone.Model.extend({
        defaults: {
            name: "Test"
        }
    });

    var MyView = Backbone.View.extend({
        tagName: "li",
        events: {
            "click li": "Show"
        },
        render: function() {
            this.el.innerHTML = this.model.get("name");
        },
        Show: function() {
            alert(this.model.get("name"));
        }
    });

    var model = new MyModel();
    var view = new MyView({model: model});
    view.render();

    document.getElementById("app").appendChild(view.el);
}

我没有收到任何错误,但单击“li”时不会触发“显示”功能。怎么了?

最佳答案

问题是您将单击事件绑定(bind)到元素的(不存在的)“li”子元素,而不是 li 元素本身。试试这个:

var MyView = Backbone.View.extend({
    tagName: "li",
    events: {
        "click": "Show"
    },
    render: function() {
        this.el.innerHTML = this.model.get("name");
    },
    Show: function() {
        alert(this.model.get("name"));
    }
});

关于javascript - Backbone.js 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403576/

相关文章:

methods - 我如何确定 backbone.js 方法接受哪些选项?

javascript - 如何在服务器端构建 Node、Express、Connect-Auth 和 Backbone 应用程序?

javascript - 如何让博主其中一个页面的内容占据整个页面的框架

javascript - Youtube Iframe Api 获取视频标题

javascript - 使用数据表数字搜索搜索表

javascript - 创建网页的本地副本

javascript - 在 Javascript 中使用 Haversine 公式

javascript - 在新窗口中打开页面上的 div,同时保持通过 websocket 更新它的能力

javascript - 在 backbone.js 中使用 jQuery UI 拖放

javascript - Backbone JS - 缓存 View 实例