2011-10-12 56 views
0

我有一个观点:模式“改变”,但它不是

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

+0

不确定这可以在没有看到模型代码的情况下进行调试,也可能是您描述的日志记录的示例输出。 – nrabinowitz

+0

对不起,固定它,'显示数据下的变化'是因为它把它放在一个'数据'子模型! – fancy

+0

所以...问题仍然有效? – nrabinowitz

回答

1

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

我可以说我看不到一个问题......你需要使用“胖箭头”(=>)而不是(->)作为你的update函数。如果您不这样做,则在事件触发时,@el,@template@model将处于错误的上下文中。

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

对不起!只是修正它,整个'显示数据下的变化'是因为它把它放在数据子模型中! – fancy

+0

谢谢你! – fancy