すべての子入力タグに ng-change ディレクティブを動的に追加するディレクティブを作成しました。
myApp.directive('autosave', function ($compile) {
return {
compile: function compile(tElement, tAttrs) {
return function postLink(scope, iElement, iAttrs) {
var shouldRun = scope.$eval(iAttrs.autosave);
if (shouldRun) {
iElement.find(':input[ng-model]').each(function () {
$(this).attr("ng-change", iAttrs.ngSubmit);
});
$compile(iElement.contents())(scope);
console.log("Done");
}
}; //end linking fn
}
};
});
私が抱えている問題は、ng-change ディレクティブが実行されていないことです。DOM要素に追加されていますが、値が変更されたときに実行されていないことがわかります。
奇妙なことに、ng-click を試してみるとうまくいきます。
これが ng-change のバグなのか、それとも私が何か間違ったことをしたのかはわかりません。
Fiddle は ng-click です (入力をクリックします) http://jsfiddle.net/dimirc/fq52V/
フィドルは ng-change を使用しています (変更時に起動する必要があります) http://jsfiddle.net/dimirc/6E3Sk/
ところで、関数をコンパイルするためにすべてを移動すると、この作業を行うことができますが、ディレクティブの属性を評価できる必要があり、コンパイル fn からディレクティブにアクセスできません。
ありがとう