2013-03-22 153 views
1

我試圖運行下面的代碼:爲什麼這個age.on事件不工作事件不起作用?

var eligible = Backbone.Model.extend({ 
     validate : function(attrs,options){ 
      //alert("ldsafh"); 
      if(attrs.min < attrs.max) { 
       return "not eligible for voting"; 
      } 
     } 

    }); 

     var age = new eligible({ 
      advice : "You are " 
     }); 


     age.on("invalid", function(model, error) { 
      alert("sfndxgj"); 
      console.log(model.get('advice') + " " + error); 
     }); 

     age.set({ 
      min : 18, 
      max : 100 
     }); 

? 請在這裏幫我....

+1

不知道有一個最大的投票年齡...今天我學到了一些東西! – 2013-03-22 04:37:59

回答

3

通過{validate:true}作爲設置中的選項。

默認情況下驗證之前保存調用,但也可稱爲前設置如果{驗證:真}傳遞

http://backbonejs.org/#Model-validate

注意invalid事件後纔可用升級到Backbone 1.0。見Change log

+0

儘管你仍然需要確保你使用的是Backbone.js的1.0版本,因爲''invalid''事件似乎是自0.9系列以來的一個補充(參見[Upgrading](http:// backbonejs。組織/#升級)) – 2013-03-22 05:36:28

+1

你說得對。更新了答案。謝謝。 – 2013-03-22 05:40:55

1

因爲您打電話給age.set()而不是age.save()它爲您調用validate方法。

+0

哦.......好吧 感謝得到它 – 2013-03-22 04:29:25

+0

如果我使用age.save(),那麼它也不工作......! – 2013-03-22 04:31:25

+1

你是否正在使用'set'將'min'和'max'參數傳遞給'save'? – 2013-03-22 04:33:19