【问题标题】:backbone and bootstrap-datepicker主干和引导日期选择器
【发布时间】:2013-03-20 05:14:46
【问题描述】:

我有一个 Rails 应用程序,我正在尝试在我的视图中添加一些交互式内容。所以我有一个用于 datepicker 的 bootstrap-datepicker-rails gem 和用于数据处理的主干.js。但是当我尝试收听 datepicker 的 'changeDate' 事件时,我得到了一些错误。视图中的挂钩事件根本不起作用,只是不会调用该方法:

events: 
  'changeDate #dpstart': 'tryit'

tryit: ->
  console.log(this)
  this

当我尝试在路由器中捕获事件时,我无法访问我的集合:

initialize: ->
    @datepicker = $('#dpstart').datepicker({
      "format": "yyyy-mm-dd",
      "weekStart": 1,
      "autoclose": true
      })       
    @datepicker.on('changeDate', @refetch, this) 

这样会产生错误,因为它无法获取 this 上下文,并且

initialize: ->
    @datepicker = $('#dpstart').datepicker({
      "format": "yyyy-mm-dd",
      "weekStart": 1,
      "autoclose": true
      })       
    @datepicker.on('changeDate', @refetch) 

这种方式运行良好,但在@refetch 中我没有获得主干上下文,因此无法访问模型。我该怎么办?

【问题讨论】:

    标签: jquery ruby-on-rails backbone.js datepicker


    【解决方案1】:

    this 自己绑定上下文(因为你有下划线或lowdash)。或者使用 Backbone 中的 this method 进行绑定(更好)。

    关于第一个没有被调用的原因,请确保 datepicker 方法返回的是您将其绑定到的 jQuery 元素 ($('#dpstart'))。我不这么认为,所以你基本上听错了我的假设。

    【讨论】:

    • ListenTo() 方法看起来就像完美匹配,但它产生的错误与我的第二个代码段中的错误相同。现在将尝试您建议的第一种方法。 =(
    • 我仍然对第二段代码感到困惑。你能粘贴确切的错误吗? @TimurMinulin
    • 当然。 Uncaught TypeError: Object # has no method 'apply' - 其中 Managers 是我的路由器。 this.listenTo(@datepicker, 'changeDate', @tryit) - 是我使用的事件挂钩。
    • 看来你的“@refetch”不是一个函数。也就是说,我不知道第三段代码是如何工作的:O。我不知道 ror,但是如果 refetch 是您路由器的一种方法,您可以尝试用 this.refetch 替换“@refetch”吗?
    • 这是咖啡脚本。实际上,@refetch 被翻译成 this.refetch,所以这不是重点。这是客户端的源代码return this.listenTo(this.datepicker, 'changeDate', this.tryit);
    猜你喜欢
    • 1970-01-01
    • 2014-10-21
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多