これは想定された動作です。リンク関数は、指定されたディレクティブのインスタンスに対して1回だけ呼び出されます。あなたも「カーソル」を言及しているので、あなたが興味があるかもしれない
var mainApp = angular.module("myapp", ['ngMaterial']);
mainApp.directive("myDirective", function($log) {
return {
restrict : 'A',
require : "ngModel",
scope : {
myDirective : "="
},
link : function(scope, element, attrs, ngModel) {
element.on('focus', doSomething);
function doSomething() {
$log.log("value is:", scope.myDirective);
if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) {
ngModel.$setUntouched();
ngModel.$setValidity();
}
}
}
}
});
http://plnkr.co/edit/RwTSsQKBtzzJDXE8by1I?p=preview
:あなたはfocus
イベントに興味を持っているので、私は、ディレクティブが適用される要素にイベントリスナを追加しましたmouseover
イベントも同様です。これは、別のイベントリスナーを追加するのと同じくらい簡単です:
element.on('mouseover', doSomething)
注:私はundefined
のlength
を読むことで、コンソールエラーを回避するためにscope.myDirective
のための追加のチェックを追加しました。 OPの要求に応じて
:
jqLiteは、これらのすべてをサポートしている場合、私は知らないが、すべてのDOMイベントのリストについては、あなたがこのpageをチェックする必要があり、あなたはおそらくfocus-の中で最も興味を持っている、キーボード - &マウスイベント。すべてjqLite機能一覧は
this
を確認するには、使用スタックスニペットやショーのコードをplunkrリンクしません。この質問はplunkrリンクがもう利用できなくなったときには不可能です – Walfrat
@Walfrat Ok。 Downvoterは、 "仮定された"間違いが将来繰り返されないように、投票の理由を明記してください! –
これが理由でした:) – Walfrat