模型'改变',但事实并非如此

时间:2011-10-12 17:32:44

标签: javascript backbone.js coffeescript

我有一个观点:

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仍然是旧数据?

1 个答案:

答案 0 :(得分:1)

很高兴看到更多...模板是什么样的?您使用的模板引擎是什么?

我可以说我发现了一个问题...你需要使用“胖箭”(=>)代替(->)来实现update功能。如果不这样做,@el@template@model将在事件触发时处于错误的上下文中。

update: =>
    $(@el).html($(@template).tmpl(@model.toJSON()))