AngularJS:存储/加载html +指令

时间:2016-11-03 14:13:22

标签: javascript angularjs angularjs-directive angular-promise

我有一个有两条路线的单页应用。每个路由从后端加载大量角度指令的html代码。加载html后,我必须编译指令,以便AngularJS允许使用它们。但是数量太大以至于this解决方案挂起浏览器一分钟,所以我使用promises顺序编译指令:

var functions = [];
angular.forEach(angular.element("ang-accordion"), function (value, key) {
         functions.push(function () {
               var taskDeferred = $q.defer();
               $compile(value)($scope);
               $timeout(function () {
                      taskDeferred.resolve();
               }, 1);
               return taskDeferred.promise;
         });
});

function serial(tasks) {
        var prevPromise;
        angular.forEach(tasks, function (task) {
            //First task
            if (!prevPromise) {
                prevPromise = task();
            } else {
                prevPromise = prevPromise.then(task);
            }
        });
        return prevPromise;
    }
serial(functions);

此解决方案使加载速度稍慢,但没有浏览器挂起。现在我想将这个带有指令的html存储在服务中,并在再次调用路由时加载它。但我遇到了一个问题,如果我从服务加载html +指令并将其绑定(使用ng-bing-html)到容器,我必须再次编译它。有没有办法存储/缓存和加载html + ng而无需再次重新编译所有内容?或者可能更快,更漂亮的方法来实现范围的指令?

0 个答案:

没有答案