javascript - 如何将参数传递给绑定(bind)在 backbone.js 中的事件对象中的函数

标签 javascript backbone.js backbone-views

我需要为在 Backbone 中的事件对象中使用的函数提供参数。

var DocumentRow = Backbone.View.extend({

    tagName: "li",

    className: "document-row",

    events: {
        "click .icon": "open",
        "click .button.edit": "openEditDialog",
        "click .button.delete": "destroy"
    },

    render: function () {
        // do something
    }
});

现在让 open 的定义为:

function open(id) {
    if (id) {
      // do something
    } else {
      // do something else
    }
}

我将从另一个函数调用 open 并在调用它时传递 id。因此,根据我是否传递 id,我需要做不同的事情。我如何在 Backbone 中执行此操作? 目前,通过点击调用时的 id 我希望它是未定义的。但是传递了一个事件对象。

为什么会发生这种情况,我该如何传递参数?

最佳答案

解决这个问题的另一种方法是使用一种完全不同的方法来处理点击,并调用“打开”以便它可以被另一个进程调用。正如另一个人提到的,您在事件散列中指定的方法是 jquery 委托(delegate)包装器,因此对于参数,您无能为力,因为您将获得委托(delegate)提供的内容。因此,在这种情况下,创建另一个方法来执行将调用打开的实际图标单击:

events: {
    "click .icon": "open",
    "click .button.edit": "openEditDialog",
    "click .button.delete": "destroy"
},
/**
* Specifically handles the click and invokes open
*/
handleIconClick : function(event) {
    // ...process 'event' and create params here...
    this.open(params);
},
/**
* This can be called remotely
*/
open : function(id) {
    if (id) {
      // do something
    } else {
      // do something else
    }
}

关于javascript - 如何将参数传递给绑定(bind)在 backbone.js 中的事件对象中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11762366/

相关文章:

javascript - 异步加载 Google jsapi

javascript - TodoMVC 中针对 Backbone Marionette 示例的设计决策

javascript - 循环集合构建 View 主干

javascript - 从 Internet Explorer 中的 AJAX 响应中删除了 SCRIPT 标记

javascript - 使用 Promises 等待嵌套的异步任务

javascript - Angular/ typescript : arrays in typescript changing when an independent element got changed

javascript - 未捕获的类型错误 : Cannot call method 'replace' of undefined underscore. js

javascript - 具有服务器端呈现的 HTML 片段的主干模型

html - 带文本的主干圆旋转

javascript - 如何从 HTML 源刷新/重新加载我的 DataTable