angular + easyui 做界面驗證


  angular結合easyui這事其實並不是很合適,因為:angular的特點之一是雙向綁定,頁面元素與頁面邏輯之間解耦;easyui是對頁面元素進行封裝,甚至一些組件是隱藏了原本的dom元素,初始化時創建新的元素來實現功能的。在某種程度上來說,angular和easyui在工作原理上是沖突的,當然,下面就是但是了,不然就不太好往下寫了。

  但是,easyui的驗證控件validatebox的驗證控件提示明顯,UI效果比較友好,而且不會影響angular的正常工作,所以我對用這兩個結合做驗證非常喜歡。

  好了,正式開始,首先添加引用:

<script src="/js/jquery-1.7.2.js" type="text/javascript"></script>
<script src="/js/jquery.easyui.min.js" type="text/javascript"></script>
<script src="/js/angular/angular.js" type="text/javascript"></script>

然后是頁面元素,只需要給對應的DOM元素指定屬性並設置驗證規則:

//controller當然是必須的
<table rules="none" ng-controller="invoiceController" class="styleEntireWidth">

 <select class="easyui-validatebox styleWiden" ng-model="basic.applyState" ng-options="c.value as c.text for c in dict.applyStateData"
    id="applyState" name="applyState" data-options="required:true,missingMessage: '請選擇申請狀態.'">
    <option value="">-- 請選擇 --</option>
 </select>

 

此時,可以看到展現效果

圖片:

 

為了讓界面更友好,使用更方便,我使用了easyui的Form組件

<div class="easyui-panel" title="發票開具申請" style="padding: 0px;"
data-options="iconCls:'icon-save',collapsible:true" id="ng-app" ng-app="invoice">

JS腳本如下:

JQuery(function () {
  JQuery('#ng-app').form('validate');
  var width = window.screen.availWidth * 0.9;
  var height = document.body.offsetHeight * 0.932;
  JQuery('#ng-app').panel('resize', {
  width: width,
  height: height
  });
});

此時效果如下圖:

 

最后,當有如保存之類操作需要驗證頁面必錄項或格式時,只需要執行以下腳本:

$scope.SavePageData = function (controlID) {
  var isValid = JQuery('#ng-app').form('validate');
  if (isValid) {
  ......
  }
};

腳本中的isValid返回的驗證結果:true or false,此時,驗證不通過也不需要額外提示,因為界面上的提示已經足夠明顯。

至於這腳本中另外一個問題:angular的controller中最好不要直接對DOM元素進行操作,我覺得已經有足夠的理由在這里妥協了,並且只有這一句代碼而已,不會有太多不好的影響,至於angular用於針對DOM元素操作的指令directive,我沒想到這里怎么用更方便,大家有好的想法,也請指點一下。

  

  

  

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM