我正在尝试创建一个可以加载模板的指令。然后模板将被缓存,因此当您第二次单击该元素时,它不会尝试加载它,而是从 $templateCache 获取最近加载的值。
我注意到在缓存命中的情况下,我没有从 $http.get() 方法得到任何响应。
<html ng-app="website">
<body ng-controller="MyController">
<a href='#' ng-click="load()">Click Event</a>
<a href='#' click-load>Click Directive</a>
</body>
</html>
angular.module('website', []).directive('clickLoad', function($q, $http, $templateCache) {
return function(scope, element, attrs) {
function loadData() {
$http.get('http://fiddle.jshell.net', {
cache: $templateCache
}).then(function(result) {
alert('loaded ' + result.data.length + " bytes");
});
}
element.bind('click', loadData);
};
});
function MyController($scope, $http, $templateCache) {
$scope.load = function() {
$http.get('http://fiddle.jshell.net', {
cache: $templateCache
}).then(function(result) {
alert('loaded ' + result.data.length + " bytes");
});
}
}
我创建了一个模拟我的场景的小提琴:
请注意,您可以根据需要多次单击“单击事件”链接,但是“单击指令”链接仅在您先单击时才有效,如果您先单击“单击事件”链接,则根本无效。
任何想法都非常感谢。