1

我有变化时触发一个功能的骨干模型..我想该功能链接到一个视图..骨干模式改变事件仅触发一次

型号:

class App.Models.Tracker extends Backbone.Model 
    urlRoot : '/api/trackers' 

    initialize: -> 
    @on('change', @update, this) 


    update: -> 
    console.log('changed in model') 
    @trigger('update', this); 

查看:

class App.Views.Tracker extends Backbone.View 
    template: JST['trackers/tracker'] 

    initialize:() -> 
    @model.on("update", @animate, this); 

    render: -> 
    $(@el).html(@template(tracker: @model)) 
    this 

    animate: -> 
    console.log('changed in view') 
    progress = @model.get('progress') 
    console.log(progress) 

发生什么事情是,模型中的“更新”方法每当模型更改时都会调用。但是,视图中的“动画”方法仅在创建模型时调用一次..

我该怎么做?

编辑

也许我只是测试它错了?

trackers = new App.Collections.Trackers 
trackers.fetch() 
tracker = trackers.get(333) 
tracker.set({progress : 70}) 

333是创建的跟踪器的ID ......但上面没有工作..确实的jsfiddle工作得很好,这是令人困惑

+0

为什么不能在视图中倾听模型上的“更改”事件? – Dave

+0

我更新了如何测试它的问题..也许有错误吗? – Stpn

回答

0

尝试等到Collection.fetch()已经完成,开始摆弄系列中的型号:

trackers = new App.Collections.Trackers 
trackers.fetch({ 
    success: function(){ 
    tracker = trackers.get(333); 
    tracker.set({progress : 70}); 
    } 
});