2

すべての子入力タグに 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 からディレクティブにアクセスできません。

ありがとう

4

1 に答える 1