angular 中的 DOM 操作

在angular中使用第三方插件時最好都封裝到指令(directives)中去,DOM操作也最好都解構(gòu)到指令中。
避免使用 jQuery 來操作 DOM,包括增加元素節(jié)點,移除元素節(jié)點,獲取元素內(nèi)容,隱藏或顯示元素。你應該使用 directives 來實現(xiàn)這些動作,有必要的話你還要編寫自己的 directives。
  如果你感到很難改變習慣,那么考慮從你的網(wǎng)頁中移除 jQuery 吧。真的,AngularJS 中的 $http 服務非常強大,基本可以替代 jQuery 的 ajax 函數(shù),而且 AngularJS 內(nèi)嵌了 jQLite —— 它內(nèi)部實現(xiàn)的一個 jQuery 子集,包含了常用的 jQuery DOM 操作方法,事件綁定等等。但這并不是說用了AngularJS 就不能用 jQuery 了。如果你的網(wǎng)頁有載入 jQuery 那么 AngularJS 會優(yōu)先采用你的 jQuery,否則它會 fall back 到 jQLite。
  需要自己編寫 directives 的情況通常是當你使用了第三方的 jQuery 插件。因為插件在 AngularJS 之外對表單值進行更改,并不能即時反應到 Model 中。例如我們用得比較多的 jQueryUI datepicker 插件,當你選中一個日期后,插件會將日期字符串填到 input 輸入框中。View 改變了,卻并沒有更新 Model,因為 $('.datepicker').datepicker(); 這段代碼不屬于 AngularJS 的管理范圍。我們需要編寫一個directive 來讓 DOM 的改變即時更新到 Model 里。

var directives = angular.module('directives', []);

directives.directive('datepicker', function() {
  return function(scope, element, attrs) {
      element.datepicker({
          inline: true,
          dateFormat: 'dd.mm.yy',
          onSelect: function(dateText) {
              var modelPath = $(this).attr('ng-model');
              putObject(modelPath, scope, dateText);
              scope.$apply();
          }
      });
  }
});

然后在 HTML 中引入這個 direcitve
<input type="text" datepicker ng-model="myObject.myDateValue" />
  說白了 directive 就是在 HTML 里寫自定義的標簽屬性,達到插件的作用。這種聲明式的語法擴展了 HTML。
  需要說明的是,有一個 AngularUI 項目提供了大量的 directive 給我們使用,包括 Bootstrap 框架中的插件以及基于 jQuery 的其他很熱門的 UI 組件。還有http://www.ngnice.com 社區(qū)貢獻的ngshowcase。 AngularJS 的社區(qū)很活躍,生態(tài)系統(tǒng)健全。

注:這篇文章是我復制過來的,本想轉(zhuǎn)載,可是轉(zhuǎn)載不到簡書上面,抱歉!原文來自:http://blog.csdn.net/yy374864125/article/details/39289123

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容