gpt4 book ai didi

javascript - Coffeescript 的主干上下文问题

转载 作者:行者123 更新时间:2023-12-02 18:39:30 25 4
gpt4 key购买 nike

我有一个简单的日历,只要日期发生变化,它就会重新呈现。在 onClick 之后,设置日期并触发change:date 事件并调用 render 方法。

但是,由于 html 未被替换,上下文已关闭。

我不知道为什么会这样,因为我使用 => 来保留上下文,当我 console.log @$el 时,它总是向我显示同一个类(class),即小部件 View

当我执行 $(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}
@

最佳答案

我觉得这个问题很简单。如果你没有读过,请仔细查看listenTo。

object.listenTo(other, event, callback)

与绑定(bind)不同

object.on(event, callback, [context])

如果您看到listenTo 没有以任何形状或形式设置回调的上下文。

尝试做

  @listenTo @date, "change:date", _.bind(@render, this);

哎呀,我不是 CoffeeScript 编写者,但你明白了。强制构造函数中的上下文始终为实例。

关于javascript - Coffeescript 的主干上下文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com