<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## Data組件基礎03:CRUD **一、新增** **1、Data組件的新增相關API:** Data.newData(option);——–后端新增,返回一行或者多行新增數據 option參數說明: { "parent" : Data.Row - 樹形數據的父(非樹形不需要), "index" : integer - 新增數據的位置,缺省新增到最后, "defaultValues" : array - 新增行的默認值數組 ,數組的長度決定新增行數,數組中的對象是列的默認值 defaultValues格式: [ {列名:默認值,...}, {列名:默認值,...}, ... ] "onError" : function - 失敗回調函數,function(event); event的格式: { "source" : {Data} - 組件的js對象, "errorType" : {string} - 'server', "errorNode" : {object} - 錯誤信息, "httpError" : {boolean} - 是否http請求失敗, "httpState" : {string} - http請求返回碼 } "onSuccess" : function - 成功回調函數,function(event); event的格式: { "source" : {Data} - 組件的js對象, "rows" : {List} - 新增行的數組 } } Data.add(defaultValues,parent);——–前端新增一行數據,狀態需要開發者設定,defaultValues,parent參數同上;不會觸發data相關事件 **2、新增數據相關事件:** onBeforeNew(event)——-新增前,可以通過event.cancel=true終止新增動作 event說明: { "source" : 組件的js對象, "options" : 新增時傳入的option參數,包括:parent,defaultValues "cancel" : 可修改,設置為true后中斷當前new動作 } onCustomNew(event);——業務數據新增接管,完全接管new動作,需要接管此事件完成data的newData邏輯 event說明: { "source" : 組件的js對象, "options" : 新增時傳入的option參數,包括:parent,defaultValues "data" : 行數據對象數組即返回的新增數據,數組的length決定新增的行數 data格式: [ { "列名" : 默認值, "列名" : 默認值, ... }, ... ] } onAfterNew(event);——業務數據新增后 event說明: { "source" : 組件的js對象, "options" : 新增時傳入的option參數,包括:parent,defaultValues "rows" : {List} 新增的行數組 } onDataChange(event);——Data數據狀態變化事件,新增后會觸發 event說明: { "source" : 組件的js對象, "options" : 新增時傳入的option參數,包括:parent,defaultValues "rows" : {List} 新增的行數組 "type" : "new" } onNewCreateParam(event);—–BizData事件,業務新增數據創建新增參數事件,可以增加和修改用戶自定義的參數 event說明: { "source" : 組件的js對象, "param" : {Request.ActionParam} 新增參數對象, "table" : {List[Data.Row]} 新增行的默認值數組 ,數組的長度決定新增行數,數組中的對象是列的默認值 "options" {Object} 新增傳入的參數,如果是tree時可以使用options.parent獲取父行對象 "defaultValues" : {Object} - 新增行的默認值表達式字符串,支持使用Biz的fn函數,如果fName默認值是'abc'那么正確寫法是defaultValues['fName']=justep.Util.toExprString('string','abc'),當table上沒有給出默認值時使用此默認值表達式,建議簡單默認值盡量使用table參數 defaultValues格式:{列名:默認值表達式,...} } onNewError(event);———–BizData事件,新增失敗后事件 event說明: { "source" : 組件的js對象, "errorType" : 'server', "errorNode" : 錯誤信息, "httpError" : http請求失敗(true/false), "httpState" : http請求返回碼 } **3、BizData組件newData和BizServer createAction的關系** BizData組件是針對BizServer action擴展的Data組件,BizData組件理解BizServer的createAction,onNewCreateParam事件是BizData組件創建準備createAction參數的事件,當擴展了createAction可以通過這個事件進行參數賦值和修改; 下面重點講一講BizData新增默認值; 在BizModel中可以看到createAction有兩個public參數table和defaultValues,table默認值優先級高于defaultValues,也就是說當table中的列沒有賦值時才使用defaultValues默認值;除了action層面的默認值還有概念關系上的默認值,當createAction沒有table和defaultValues默認值時使用概念關系上的默認值,那么整個Biz端新增默認值的優先級就是: table > defaultValues > 概念上關系默認值 > 關系默認值 有了上面的認識對于BizData的新增默認值就好理解了,首先onNewCreateParam事件中table和defaultValues對應的就是createAction的參數table和defaultValues,默認值優先級就顯而易見了,到這大家可能會問,newData中option參數上的defaultValues和這些默認值又是什么關系?newData中option參數上的defaultValues最終對應的是onNewCreateParam事件中table參數,也就是說newData中option參數上的defaultValues優先級最高 下面給出BizData新增的代碼示例: //新增兩行數據到最后,并且給出sName和sCode的默認值 var data = this.comp('mainData'); var options = { defaultValues : [ {sName:'a1',sCode:'b1'}, {sName:'a2',sCode:'b2'} ] }; data.newData(options); //使用add新增 var row = data.add({sName:'a1',sCode:'b1'}); data.setRowState(row, Data.STATE.NEW);//設置新增行狀態 **二、刷新** **1、Data組件數據刷新加載API** Data.refreshData(option)—-業務數據刷新,會刺激從data級聯刷新,當limit!=-1時取第一頁數據,當limit=-1時取全部數據,當confirmRefresh=true并且數據是編輯或者新增狀態時刷新數據時顯示刷新確認提示框 option參數說明: { "onError" : {function} - 失敗回調,function(event), event的格式: { "source" : {Data} - 組件的js對象, "errorType" : {string} - 'server', "errorNode" : {object} - 錯誤信息, "httpError" : {boolean} - 是否http請求失敗, "httpState" : {string} - http請求返回碼 } "onSuccess" : {function} - 成功回調,function(event), event的格式: { "source" : {Data} - 組件的js對象 } } Data.open()—-加載數據行為和refreshData一致,只是當Data.isLoaded()==false時執行數據加載 Data.loadNextPageData(option)—-加載下一頁的數據,limit!=-1時可以使用 option參數同Data.refreshData(option)option參數 Data.loadAllPageData(option)—-在分頁狀態加載所有數據,limit!=-1時可以使用 option參數同Data.refreshData(option)option參數 Data.loadPageData(pageIndex,option)—-分頁模式下加載第N頁數據,參數pageIndex指定需要加載的頁,limit!=-1時可以使用 option參數同Data.refreshData(option)option參數 Data.loadData(data,append,parent,index)—-加載數據到Data data:{Json Object} 必須參數,需要加載的Json數據,格式同biz層序列化格式,即包含rows數組的數據 append:{Boolean} 數據增加模式 true/false parent:{Data.Row} 樹形數據時增加數據的父,為null時數據加載到根下 index:{Integer} 加載數據的插入位置,缺省數據插入到末尾 //通過loadData給data增量載入數據 var data = this.comp('mainData'); data.loadData({ rows:[ {fName:'小李',fAge:25}, {fName:'小王',fAge:28}, {fName:'小張',fAge:20} ] },true); 和刷新數據相關還有兩個屬性:confirmRefresh、confirmRefreshText,當confirmRefresh==true并且data處于修改狀態時刷新data將彈出confirmRefreshText提示,取消后將不進行刷新動作 **2、Data組件數據刷新相關事件** onBeforeRefresh(event)——-刷新前,可以通過event.cancel=true終止刷新動作 event說明: { "source" : 組件的js對象, "options" : 刷新給入的參數 "cancel" : 可修改,設置為true后中斷當前刷新動作 } onCustomRefresh(event)——-業務數據刷新接管,完全接管刷新動作 event說明: { "source" : 組件的js對象, "cancel" : 可修改,設置為true后中斷當前刷新動作, "limit" : 頁大小, "offset" : 偏移, "options" : 刷新給入的參數 } onAfterRefresh(event)——-業務數據刷新后 event說明: { "source" : 組件的js對象 "limit" : 頁大小, "offset" : 偏移, "options" : 刷新給入的參數 "success" : 是否成功刷新 } onDataChange(event);——Data數據狀態變化事件,刷新后會觸發 event說明: { "source" : 組件的js對象 "limit" : 頁大小, "offset" : 偏移, "options" : 刷新給入的參數 "success" : 是否成功刷新 } onRefreshCreateParam(event)——-BizData事件,業務刷新數據創建刷新參數事件,可以增加和修改用戶自定義的參數 event說明: { "source" : 組件的js對象, "limit" : 頁大小, "offset" : 偏移, "options" : 刷新給入的參數 "success" : 是否成功刷新 "type" : "refresh" } onRefreshError(event)——-BizData事件,業務刷新數據失敗后事件 event說明: { "source" : 組件的js對象, "options" {Object} 新增傳入的參數,如果是tree時可以使用options.parent獲取父行對象 "param" : {Request.ActionParam} 刷新參數對象 "offset" : 取數據的偏移 "limit" : 取數據的條數 } **3、BizData組件數據刷新和BizServer queryAction的關系** 同樣BizData組件理解BizServer的queryAction,BizData組件的數據刷新是通過BizServer的queryAction返回數據的,onRefreshCreateParam事件同樣可以用于適配不同的queryAction進行參數的增減,在Data組件上offset、limit屬性有著比較重要的地位,這兩個參數直接對應后臺的queryAction的offset、limit參數,limit指一頁數據取多少條,offset指從第幾條開始取數據,所有的刷新數據API都和offset、limit屬性有關,使用分頁相關刷新API時,limit必須大于0。(這里簡單提一下Data組件,Data組件雖然沒有實現后端取數據邏輯,但是通過onCustomRefresh事件能同樣實現對應queryAction的數據查詢) **三、保存** **1、Data組件數據保存API** Data.saveData(option)——-業務數據保存方法,向后端提交修改的數據,包括從Data數據 option參數說明: { "onError" : {function} - 失敗回調,function(event), event的格式: { "source" : {Data} - 組件的js對象, "errorType" : {string} - 'server', "errorNode" : {object} - 錯誤信息, "httpError" : {boolean} - 是否http請求失敗, "httpState" : {string} - http請求返回碼 } "onSuccess" : {function} - 成功回調,function(event), event的格式: { "source" : {XData} - 組件的js對象 } "ignoreInvalid" : {boolean} - 保存時忽略有效性校驗,默認false } **2、Data組件數據保存事件** onBeforeSave(event)——-業務數據保存前,事件在批事務啟動后觸發,寫在這個事件里的biz action請求將在一個批操作完成 event說明: { "source" : 組件的js對象, "cancel" : 可修改,設置為true后中斷當前保存動作 } onCustomSave(event)——-業務數據保存接管,完全接管保存動作 event說明: { "source" : 組件的js對象, "cancel" : 可修改,設置為true后中斷當前保存動作 "options" : 保存時給入的參數 } onAfterSave(event)——-業務數據保存后,事件在批事務啟動后觸發,寫在這個事件里的biz action請求將在一個批操作完成 event說明: { "source":組件的js對象, "cancel" : 可修改,設置為true后可中斷當前批操作中的所有保存 "options" : 保存時給入的參數 } onSaveCommit(event)——-業務數據保存事務提交后,數據提交成功,BizData組件是BizServer保存成功后觸發,Data組件是開發者保存提交成功后通過API Data.applyUpdates()刺激觸發 event說明: { "source" : 組件的js對象 } onSaveCreateParam(event)——-BizData事件,業務數據保存創建保存參數事件,可以增加和修改用戶自定義的參數 event說明: { "source" : 組件的js對象, "param" : {Request.ActionParam} 保存參數對象 } onSaveError(event)——-BizData事件,業務保存失敗后事件 event說明: { "source" : 組件的js對象, "errorType" : 'server', "errorNode" : 錯誤信息, "httpError" : http請求失敗(true/false), "httpState" : http請求返回碼 } **3、BizData組件數據保存** BizData組件數據保存時主從所有的data在一個批事務請求中,提交到BizServer saveAction保存的數據只包含修改的數據(新增、刪除,修改),saveAction成功返回后會主動調用Data.applyUpdates()進行數據狀態的修改,當然同樣規則可以通過onSaveCreateParam事件進行saveAction的擴展。 BizData保存更新模式屬性updateMode,它定義了BizData數據的更新模式,下面結合此屬性講講基于BizData的數據保存原理, 解決數據更新沖突平臺采用樂觀鎖實現,簡單說就是多個人同時更新一條數據時只會一個更新成功;平臺中更新模式有兩種:whereVersion,whereAll,其實還可以增加whereKey(目前沒有實現),whereVersion更新數據時使用key和version作為條件更新,使用data的save時平臺會自動維護version,也就是說在更新語句中會做version+1,當version變化時說明數據已經被人修改,當前更新失敗回滾,whereAll模式使用所有查詢列的舊值做更新的條件,當條件不滿足就說明數據已經被人修改,當前更新失敗回滾。從數據嚴格性上說:whereKey<whereVersion<whereAll,平臺BizData默認使用whereVersion **四、刪除** Data組件刪除根據directDeleteMode屬性分為立即刪除和跟隨saveData刪除,directDeleteMode==true時BizData直接請求BizServer saveAction進行數據刪除,directDeleteMode!=true時deleteData只是把數據放入data的刪除隊列,直到saveData時才一起提交所有修改數據,也就是說BizData組件的刪除都是使用BizServer saveAction實現。 **1、Data組件刪除API** Data.deleteData(rows) Data.deleteAllData() **2、Data組件刪除事件** onBeforeDelete(event)——-業務數據刪除前 event說明: { "source" : 組件的js對象, "cancel" : 可修改,設置為true后中斷當前delete動作, "deleteRows" : 刪除的行數組 } onCustomDelete(event)——-業務數據刪除接管,完全接管delete動作 event說明: { "source" : 組件的js對象, "cancel" : 可修改,設置為true后中斷當前delete動作, "deleteRows" : 刪除的行數組 } onAfterDelete(event)——-業務數據刪除后 event說明: { "source" : 組件的js對象, "deleteRows" : 刪除的行數組 } onDeleteError(event)——-BizData組件事件,刪除提交失敗后事件 event說明: { "source" : 組件的js對象, "errorType" : 'server', "errorNode" : 錯誤信息, "httpError" : http請求失敗(true/false), "httpState" : http請求返回碼 } **五、數據狀態** Data組件的數據狀態包括data狀態、Row狀態、Cell狀態; data狀態指Data數據是否加載數據,通過Data.isLoaded()獲取,這個狀態在Data.refreshData、Data.newData等加載數據API執行后狀態變更成true; Row狀態指行數據狀態,包含:Data.STATE.NEW、Data.STATE.DELETE、Data.STATE.EDIT、Data.STATE.NONE,數據新增、刪除、修改后行狀態變更,然后在執行Data.saveData后通過Data.applyUpdates()更新行狀態為Data.STATE.NONE(BizData會自動調用Data.applyUpdates()); Cell狀態指列上的修改狀態,當數據修改后列上changed變更為true,同Row的狀態邏輯Data.saveData后變更為false; 相關API: Data.getRowState(row)—-獲取行狀態,參數row給出要獲取狀態的行對象 Data.setRowState(row,state)—-修改行狀態,row:行對象,state:行狀態,注:不能設置delete狀態,使用deleteData函數實現 Data.isChanged()—-判斷是否有數據修改 **六、數據序列化** 把Data的數據進行序列化提供了API: Data.toJson(changed,excludeCalculateCol)——-data的json格式序列化對象,changed參數=true,只序列化data的變化行數據,excludeCalculateCol參數=true,排除data定義計算列
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看