模型“改变”,但事实并非如此
我有一个观点:
class FancyView extends Backbone.View
template: #fancytemplate
initialize: () ->
@add()
@model.bind('change', @update)
add: () ->
$(@el).html($(@template).tmpl(@model.toJSON())).prependTo('#fancy')
update: () ->
$(@el).html($(@template).tmpl(@model.toJSON()))
当更新中的日志记录 @model.changedAttributes()
发生更改时,会显示 data
下的更改,但日志记录 @model
仍然显示旧数据,因此更新时没有任何变化。
为什么@model
仍然是旧数据?
I have a view:
class FancyView extends Backbone.View
template: #fancytemplate
initialize: () ->
@add()
@model.bind('change', @update)
add: () ->
$(@el).html($(@template).tmpl(@model.toJSON())).prependTo('#fancy')
update: () ->
$(@el).html($(@template).tmpl(@model.toJSON()))
When a change comes in logging @model.changedAttributes()
in update shows changes under data
but logging @model
still shows the old data and thus nothing changes on update.
Why is @model
still the old data?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
很高兴看到更多...模板是什么样子的?您使用什么模板引擎?
我可以说我立刻就看到了一个问题...您需要使用“粗箭头”(
=>
) 而不是 (->
)您的更新
功能。如果不这样做,当事件触发时,@el
、@template
和@model
将处于错误的上下文中。It would be nice to see more... what does the template look like? What templating engine are you using?
I can say that I see one problem off the bat... you need to use the "fat arrow" (
=>
) instead of (->
) for yourupdate
function. If you don't,@el
,@template
and@model
will be in the wrong context when the event fires.