【问题标题】:how do I use variables when binding backbone view events?绑定主干视图事件时如何使用变量?
【发布时间】:2011-09-30 22:21:12
【问题描述】:

我想使用我在视图选项中定义的选择器将事件绑定到视图。

类似(在 coffescript 中):

events: ()->
  "change" : "setNewCheckedStateWithCheckbox"
  '"click'+ @.options.choices_button_selector +'"' : "test"

我这辈子都想不通。

【问题讨论】:

    标签: javascript jquery backbone.js coffeescript


    【解决方案1】:

    这里的问题是你不能在 JavaScript 对象字面量的键中做表达式。在对象上设置任意键的唯一方法是使用obj[expression] 语法。

    这是重写代码以执行所需操作的一种方法:

    class MyView extends Backbone.View
      _events = change: "setNewCheckedStateWithCheckbox"
      events: ->
        eventsHash = _.extend {}, _events
        eventsHash["click #{@.options.choices_button_selector}"] = "test"
        eventsHash
    

    【讨论】:

    • 太棒了,谢谢!我最终重新考虑了整个视图,但这是我遇到的事情,并且经常想知道。完美!
    【解决方案2】:

    试试这个

    events: ()->
      "change" : "setNewCheckedStateWithCheckbox"
      "click#{@options.choices_button_selector}" : "test"
    

    下次只需添加 console.log 即可显示您不确定的值。

    console.log '"click'+ @.options.choices_button_selector +'"'
    

    这将输出带有引号的"click#selector"(不应该存在)。

    【讨论】:

    • 是的,#{} 与我要查找的内容很接近,但会引发语法错误:Unexpected '{'
    • 你用什么编译?
    • 这是一个使用 barista 的 rails 3 应用程序。
    • 那么你的代码中还有另一个错误,因为那是有效的咖啡脚本。
    • @ilia 不,不是。您不能在对象键中使用字符串插值。该功能曾得到短暂支持,但在 1.0 版本之前已被删除。
    猜你喜欢
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多