0
我有簡單的自定義指令,檢查並設置其元素href
。 但我需要檢查與從服務器(異步)加載的數據的href,以確保用戶有權訪問該鏈接(ACL的種類)。角延遲自定義指令的鏈接功能
那麼我怎麼能延遲鏈接功能的工作,直到這個數據完成加載?
我有簡單的自定義指令,檢查並設置其元素href
。 但我需要檢查與從服務器(異步)加載的數據的href,以確保用戶有權訪問該鏈接(ACL的種類)。角延遲自定義指令的鏈接功能
那麼我怎麼能延遲鏈接功能的工作,直到這個數據完成加載?
好吧,我煮東西爲我自己,感謝任何指針改進它, 我做了一個gist
angular.module('myModule')
.factory('dataLoader', ['$http', function ($http) {
var __list = null;
var __request = null;
return function (callbak) {
if (__list)
callbak(__list);
else {
if (!__request)
__request = $http({
method: 'GET',
url: '/myurl',
params: {}
});
__request.success(function (d) {
if (d.data) {
__list = d.data;
callbak(__list);
}
});
}
}
}])
.directive('myDirective', ['dataLoader', function (dataLoader) {
return {
restrict: "A",
compile: function (scope, element, attrs) {
return function (scope, element, attrs) {
dataLoader(function (acl) {
console.log(acl.length);
var href = attrs.myDirective;
if (href) {
if (href[0] != '#')
href = '#' + href;
element.attr('href', href);
}
});
};
}
};
}]);
把它在$超時。 – user3227295
@ user3227295如果你的意思是延遲$ timeout,這是一個非常糟糕的做法,如果你的意思是$ timeout沒有延遲,$ tmeout不知道http請求及其狀態,只適用於$ scope vars和消化 – Exlord