如何确定在同步时更改了哪些属性

时间:2013-11-21 15:54:48

标签: backbone.js

正如标题所说,有什么方法可以让我确定同步时模型上的哪些属性发生了变化?

对我而言,理想的情况是一个像change监听器一样运作的机制,所以我有类似的东西:

var MyModel = Backbone.Model.extend({

    initialize: function(){
        this.on({
            'sync:Name' : 'onSyncName'
        })

        onSyncName: function(){
            alert('Name saved!');
        }
    }
}) 

据我所知,这个机制对于个别属性整体不存在,sync只会引用整个模型本身。

2 个答案:

答案 0 :(得分:0)

您可以使用模型中的changedAttribute函数,该函数返回从上一组更改的属性的哈希值。

var MyModel = Backbone.Model.extend({

   initialize: function(){
      this.on({
        'sync' : 'onSync'
      });        
   },
   onSync: function(model){
        _.each( model.changedAttributes(), function(value, key, list) { console.log("key" + key + " value " + value);
   }

}) 

仅属性的同步事件不存在且没有意义,因为它是同步的整个模型

答案 1 :(得分:0)

您可以在模型中添加 validate 方法,并将其用于将已更改的属性保存在变量中:

unstaged