主干和引导日期选择器

Posted

技术标签:

【中文标题】主干和引导日期选择器【英文标题】: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 中我没有获得主干上下文,因此无法访问模型。我该怎么办?

【问题讨论】:

【参考方案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);

以上是关于主干和引导日期选择器的主要内容,如果未能解决你的问题,请参考以下文章

引导日期选择器和引导验证器

引导日期选择器从另一个日期选择器更改 minDate/startDate

在引导日期选择器中启用特定日期

如何使用引导日期选择器

两个月,同时在引导程序的日期选择器中选择日期

如何禁用和启用引导日期选择器