下面是角的內置事件處理指令的樣式可重複使用的指令:
angular.module('sbLoad', [])
.directive('sbLoad', ['$parse', function ($parse) {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
var fn = $parse(attrs.sbLoad);
elem.on('load', function (event) {
scope.$apply(function() {
fn(scope, { $event: event });
});
});
}
};
}]);
當觸發img load事件時,sb-load屬性中的表達式會在當前作用域中與作爲$ event傳入的load事件一起計算。以下是如何使用它:
HTML
<div ng-controller="MyCtrl">
<img sb-load="onImgLoad($event)">
</div>
JS
.controller("MyCtrl", function($scope){
// ...
$scope.onImgLoad = function (event) {
// ...
}
注: 「SB」 僅僅是我用我的自定義指令的前綴。
謝謝山姆,這工作像一個魅力,我想我會留下sb前綴給你信用。 – Michiel
贊成可擴展解決方案,無需使用jqLite(從Angular 2中刪除) –