[英]Backbone context issue with coffeescript
我有一个简单的日历,每当日期更改时重新呈现。 在onClick
之后,日期设置为触发change:date事件并调用render方法。
但是,由于html没有被替换,因此上下文已关闭。
我不知道为什么会这样,因为我使用=>
来保存上下文,当我在console.log @$el
它总是向我显示同一个类,即。 WidgetView
当我执行$(elementName).html
而不是@$el.html
时,它可以工作。 想法?
class WidgetView extends sandbox.mvc.View
className: 'sidebar-group'
events:
"click a" : "onClick"
template: sandbox.template.compile tmpl
initialize: (options) ->
@date = new DateModel {rid:1000}
@listenTo @date, "change:date", @render
onClick: (e) ->
e.preventDefault()
# Get value
value = $(e.currentTarget).text()
# Set date model
@date.set {date:value}
# Emit model change event
sandbox.emit "model.date.change", @date
return false
render: (model) =>
data = CalendarResource()
@$el.html @template {calendar: data}
@
我认为问题很简单。 如果你没有看过,请仔细看看。
object.listenTo(其他,事件,回调)
与bind不同
object.on(event,callback,[context])
如果您看到listenTo没有以任何形状或形式设置回调的上下文。
试着做
@listenTo @date, "change:date", _.bind(@render, this);
Bleh我不是咖啡脚本,但你明白了。 强制构造函数中的上下文始终是实例。
这个特殊问题的问题在于我使用的是JQuery Page Slide插件,它将元素复制到另一个节点。
结果,我正在更新参考节点,插件没有保持新节点同步。
由于插件没有刷新方法,我将不得不复制元素并重新绑定所有事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.