骨干。不同的型号变化

时间:2013-07-08 09:12:50

标签: javascript backbone.js

更改主干中的模型。我通常使用model.set或model.unset来更改某些模型值。它通常在UI上显示(绑定)。

我现在做了不同的事情,通过引用改变模型。就我所见,它的工作正常,但我想知道Backbone是否合适。

我正在对模型进行排序(基于UI更改,UI没有绑定),我正在通过引用来做。所以我没有使用骨干提供的套装。

这就是我的所作所为:

var source = this.model.get('mymodel'),
            temp = source[startMove];               
            temp.age= endMove; 

            if (startMove <= endMove) {
                for (var i = 1; i < endMove; i++) {
                    if (i >= startMove) {
                        source[i] = source[i + 1];
                        source[i].age--;
                    }
                }

                 // Rest of the code

简而言之,我不是通过使用set命令来操纵模型,而是使用源值。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您不会触发change:*事件,并且您的模型不会根据其验证方法进行验证。考虑这个例子:

var model = new Backbone.Model();
var o = {};
model.set('o', o);
o.hello = 1;

model.get('o').hello; // 1;

On the other hand when getting from a backbone model you will get the value stored in `model.attributes[attr]`. So actually you can also set like in your example:

var local_o = model.get('o');

local_o.hello = 2;

model.get('o').hello; // 2;

如果总是使用.set,那么我的模型可以验证并且我的所有更改事件都会被触发;您还可以使用_.clone对对象进行浅层关闭:

var local_o = _.clone(model.get('o'));

local_o.hello = 3;

model.get('o').hello; // 2