Ich würde dies nicht empfehlen, aber Sie können die ngClick
Anweisung überschreiben, um das zu tun, wonach Sie suchen. Das heißt nicht, du solltest.
Mit Blick auf die ursprüngliche Implementierung:
compile: function($element, attr) {
var fn = $parse(attr[directiveName]);
return function(scope, element, attr) {
element.on(lowercase(name), function(event) {
scope.$apply(function() {
fn(scope, {$event:event});
});
});
};
}
Wir können dies tun, um es zu überschreiben:
app.config(function ($provide) {
$provide.decorator('ngClickDirective', function ($delegate) {
var directive = $delegate[0];
var origCompile = directive.compile;
directive.compile = function (el, attrs) {
origCompile.apply(this, arguments);
return function (scope, el, attrs) {
var fn = attrs.ngClick;
el.on('click', function (event) {
scope.$apply(function () {
if (!scope[fn]) {
return;
}
if (typeof scope[fn] !== 'function') {
throw new Error('Property ' + fn + ' is not a function on ' + scope);
}
scope[fn].call(null, event);
});
});
};
};
return $delegate;
});
});
Dann würden Sie Ihre Funktionen wie folgt übergeben:
<div ng-click="func"></div>
im Gegensatz zu:
<div ng-click="func()"></div>
jsBin : http://jsbin.com/piwafeke/3/edit
Wie gesagt, ich würde dies nicht empfehlen, aber es ist ein Proof of Concept, der Ihnen zeigt, dass Sie das eingebaute Winkelverhalten tatsächlich überschreiben / erweitern / erweitern können, um es Ihren Anforderungen anzupassen. Ohne all das tief in die ursprüngliche Implementierung eintauchen zu müssen.
Gehen Sie bitte vorsichtig damit um, wenn Sie sich für diesen Weg entscheiden (es macht jedoch viel Spaß).
undefined
sollte"undefined"
, sonst wird der Ausdruck immer als falsch ausgewertet, da ertypeof
eine Zeichenfolge zurückgibt.