2014-11-24 69 views
2

我需要捕捉一個「beforeChange」事件,在模型字段更改之前準備一些內容。 BackboneJS是否有類似的東西,或者我怎麼能做到類似的東西?backbonejs是否發佈'beforeChange'事件?

+1

看起來像是如果set操作導致值的更改,就會拋出'change'。對於你正在尋找的功能,我會覆蓋'set'。您可以提前檢查您的密鑰,在發現時拋出預先事件,然後按照默認設置行爲 – stakolee 2014-11-24 20:29:46

回答

2

沒有「beforeChange」事件這樣的事情 - 但我知道有幾種方法可以完成類似的事情。

1.覆蓋model.set

做最簡單的事情是覆蓋model.set 例子:http://jsfiddle.net/dkho4p2r/

var Foo = Backbone.Model.extend({ 
    set: function (attributes, options) { 
     // do stuff here 
     Backbone.Model.prototype.set.apply(this, arguments); 
    } 
}); 

2. model.validate

您也可以訪問model.validate,-如果您通過調用model.set時的validate: true選項 - 在模型實際更改之前調用。

例子:http://jsfiddle.net/dkho4p2r/1/

這可能是不要把任意代碼的最佳場所,但它符合模型的change事件之前發生的要求。調用model.set

3.過程輸入這可能是你正在尋找避免太明顯的答案,但在模型調用set()才能永遠只是「準備一些東西。」示例:http://jsfiddle.net/dkho4p2r/2/

data = prepareSomeStuff(data); 
model.set(data);