2016-07-07 68 views
0

我有一個骨幹視圖,我調用model.save來創建/更新表單中提交的日期。在調用save之前,我顯式調用了model.isValid(true)來驗證表單字段,然後處理表單數據以使其準備API預期格式(通過添加或修改附加字段),然後調用mode.save函數由於修改後的數據,再次觸發驗證功能,驗證功能失敗。因爲我已經明確地調用了isValid函數,所以我想在保存期間再次阻止該調用。我怎麼能在骨幹中做到這一點。這裏是示例代碼。如何在骨幹JS中調用model.save時防止驗證函數調用

var data = Backbone.Syphon.serialize($(e.currentTarget).closest('form.my_form')[0])); 
    this.model.set(data); 

    if(this.model.isValid(true)) { 

        data['metas'] = this.context.metaData; 
        data['metas'][0]['locale'] = this.parentObj.model.get('locale'); 

        data['metas'][0]['name'] = data['name']; 
        delete data['name']; 
       } 

       var tempDynAttrs = []; 
       if(data['dynamicAttributes']){ 
         $.each(data['dynamicAttributes'], function(index,obj) { 
          if(obj['attributeValue'] !== null && obj['attributeValue'] !== undefined) { 
           tempDynAttrs.push({ 
            attributeName: obj['attributeName'], 
            attributeValue: [obj['attributeValue']], 
            locale: data['defaultLocale'], 
            status: 'active' 
           }); 
          } 
         }); 
        } 
       data['dynamicAttributes'] = tempDynAttrs; 

       this.model.save(data, { 
        url: this.model.url(), 
        patch: true, 
        success : function(model, response) { 
         $('#headerMessage').html('Data is updated successfully'); 
        }, 
        error : function(model, response) { 
         $('#headerMessage').html('Error updating data'); 
        } 
       }); 
} else { 
    $('#formPanel').animate({ 
       scrollTop: $('.has-error').first().offset().top-50 
       }, 100); 
    return false; 
} 

回答

1

嘗試通過{validate:false}在保存選項,如

book.save({author: "Teddy"}, {validate:false}); 

根據版本更改日誌0.9.10

模型驗證目前僅在默認情況下強制執行Model#save並且不再在施工時或Model#set中強制執行,除非{validate:true}選項通過。

所以通過{validate:false}應該做的伎倆。