Tôi đang cố tạo một chỉ thị có thể tải mẫu. Mẫu sau đó sẽ được lưu vào bộ nhớ cache để lần thứ hai bạn nhấp vào phần tử nó sẽ không cố gắng tải nó mà thay vào đó lấy giá trị được tải gần đây từ $ templateCache.
Tôi nhận thấy rằng trong trường hợp xảy ra lần truy cập bộ nhớ cache, tôi không nhận được bất kỳ phản hồi nào từ phương thức $ 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");
});
}
}
Tôi đã tạo một fiddle mô phỏng kịch bản của tôi:
Lưu ý rằng bạn có thể nhấp vào Nhấp vào liên kết tổ chức sự kiện nhiều lần như bạn muốn, tuy nhiên "Click Chỉ thị" liên kết chỉ hoạt động một lần nếu trước tiên bạn nhấp vào nó, nó không hoạt động chút nào nếu bạn nhấp vào liên kết "Nhấp vào sự kiện" trước tiên.
Bất kỳ ý tưởng nào được đánh giá cao.
Cảm ơn phản hồi của bạn. Bạn đang đúng vấn đề là ràng buộc. Tôi đã thay đổi mã của mình thành phạm vi $. $ Áp dụng giống như ng-click và nó hoạt động. Xem tại đây: http://jsfiddle.net/3ea64/1/ – user43685
Xin cảm ơn người dùng43685. Điều đó áp dụng phạm vi chỉ là điều tôi cần để có được http làm việc ngay trong chỉ thị của tôi – Erich