minesweeper.directive('ngRightClick', function($parse) {
return function(scope, element, attrs) {
var fn = $parse(attrs.ngRightClick);
element.bind('contextmenu', function(event) {
scope.$apply(function() {
event.preventDefault();
fn(scope, {$event:event});
});
});
};
});
如上程式碼,解釋說是自訂ngRightClick指令,但首先不能理解它的意思,再一個自訂指令不應該是下面這種形式嗎:
minesweeper.directive("mineGrid",function(){
return {
restrict:'E',
replace:false,
templateUrl:'./templates/mineGrid.html'
}
});
求指教
首先自訂右鍵不是自訂元素,不應約束為element,更不會有HTML。直接回傳function是直接傳回link function的簡寫,自訂右鍵應該約束為屬性。
這是使用了angular的內建服務$parse,建議看看這篇文章AngularJS內幕詳解之 Directive