国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

angular.js - angular指令封裝第三方插件,如何實作第三方j(luò)s按需加載
天蓬老師
天蓬老師 2017-05-15 17:02:42
0
1
684
  • 需求是在調(diào)用某個封裝了第三方插件的directive時再加載該插件相關(guān)的js文件,實現(xiàn)按需加載,但不用requireJS

  • 我的初期想法是,在directivelink函數(shù)中利用jquery動態(tài)加載相關(guān)js文件,但是這樣不知道文件加載完成的時間。

  • 相關(guān)程式碼如下(以封裝select2為例)

    <p ng-app="app" ng-controller="FooController as vm">
      <select my-select2 ng-model="vm.selector">
        <option value="aaaa">aaaaa</option>
        <option value="bbbb">bbbbb</option>
        <option value="cccc">ccccc</option>
      </select>
      <p ng-bind="vm.selector"></p>
    </p>
    var app = angular.module('app', []);
    app.controller('FooController', function() {
      var vm = this;
    });
    
    //自定義指令,簡單封裝select2, 這里只是以select2為例
    app.directive('mySelect2', function($timeout) {
      return {
        link: function(scope, ele, attr) {
         
          //目前的想法是在這兒用jq動態(tài)加入script標(biāo)簽導(dǎo)入select2源文件
          //但是文件是異步加載的,無法知道什么時候加載完
          $('body').append('<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></sc'+'ript>');
          
          //現(xiàn)在用timeout等select2加載好,模擬出應(yīng)該實現(xiàn)的效果    **求各位給個正確的方案**
          $timeout(function() {
            $(ele).select2();    //主要為了元素可以調(diào)用這個方法,這是select2插件的初始化方法
          }, 3000);
        }
      };
    });
  • codepen連結(jié)

angularJS中到底該怎麼實現(xiàn)局部按需加載?


好吧,答案就是ocLazyLoad,以下是修改之後的部分代碼.
ps: 原理是不是利用ajax異步請求目標(biāo)js文件,然後在回調(diào)函數(shù)中,將請求到的文本放入script標(biāo)籤,加入dom,然後進行插件相關(guān)的呼叫?

app.directive('mySelect2', function($timeout, $ocLazyLoad) {
  return {
    link: function(scope, ele, attr) {
      ele.hide();
      $ocLazyLoad.load(['https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js',
       'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css'])
       .then(function() {
            $(ele).select2(); 
        }); 
    }
  };
});
天蓬老師
天蓬老師

歡迎選擇我的課程,讓我們一起見證您的進步~~

全部回覆(1)
為情所困

推薦ocLazyLoad,中文文檔,英文文檔。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板