0

我有的:

我有 x-editable 弹出窗口,它应该在 validate 方法的帮助下检查输入参数

$(".vacancy-edit-select-status").editable({
    value: $this.model.get('value').id,
    source: source,
    validate: function(value) {
        $this.model.previousAttributes(); //UNDEFINED!!!
        //....            
    },
    success: function (response, newValue) {
        $this.model.set('value', newValue);
    }
});

有什么问题:

内部验证方法previousAttributes()方法返回“未定义”。(在更改 x-editable popup 的变量之前,我已经更改了一些模型属性,因此历史记录不应为空)

问题:

如何从validate方法访问模型历史记录?

4

2 回答 2

1

previousAttributes填充期间set,在填充参考validate 之前调用previousAttributes

于 2013-10-17T07:34:15.563 回答
0

答案很简单,我的问题可能还不够清楚:

Backbone 仅在更改事件时克隆模型状态。

此外,当您将集合作为模型属性时,previousAttributes 也存在一些细微差别。例如,要将属性更改写入历史记录,您必须重写整个属性。我是说

this.model.get('myCommentsCollection').push('newComment'); //DOESN'T WRITE ANYTHING TO previousAttributes

所以要写一些东西到model.previousAttributes你应该这样做:

var comments = _.clone(this.model.get("comments"));
this.model.set('myCommentsCollection', comments);
于 2013-10-18T07:21:56.427 回答