我玩了一下并使用了 AngularJS 的缓存(此处描述:http://docs.angularjs.org/api/ng http://docs.angularjs.org/api/ng.$http)
这是一个现场演示:http://jsfiddle.net/4SsgA/ http://jsfiddle.net/4SsgA/
我基本上调整了 $http 语法并使用 ng-click 指令,而不是在指令内注册事件侦听器(只是因为我更喜欢它:))
HTML:
<html ng-app="website">
<body ng-controller="MyController">
<a href='#' ng-click="load()">Click Event</a>
<a href='#' click-load ng-click="loadData()">Click Directive</a>
</body>
</html>
JS:
angular.module('website', []).directive('clickLoad', function($q, $http, $templateCache) {
return function(scope, element, attrs) {
scope.loadData = function() {
$http({method: 'GET', url: 'http://fiddle.jshell.net', cache: true}).then(function(result) {
alert('loaded ' + result.data.length + " bytes");
});
}
};
});
function MyController($scope, $http, $templateCache) {
$scope.load = function() {
$http({method: 'GET', url: 'http://fiddle.jshell.net', cache: true}).then(function(result) {
alert('loaded ' + result.data.length + " bytes");
});
}
}