0

カスタムディレクティブを書いています。要素に ng-click 属性を追加するディレクティブが必要です attrs.$set('ng-click','clicked()'); ng-click ディレクティブをコンパイル関数に追加しようとしましたが、プリおよびポスト リンク関数。属性が追加されましたが、機能しません。洞察に感謝します。ありがとう!

.directive('myDir', function () {
        return{
            compile: function (tElement, tAttrs, transclude) {

                //tAttrs.$set('ng-click','clicked()');

                return {
                    pre: function (scope, element, attrs) {
                       //attrs.$set('ng-click','clicked()');
                    },
                    post: function (scope, element, attrs) {
                      //attrs.$set('ng-click','clicked()');  

                        scope.clicked = function(){
                            console.log('clicked!!!');
                        };
                    }
                };
            }
        };
    });
4

1 に答える 1

1

jQuery を介して属性を追加したので、Angular はそれを認識しません。簡単な答えは、スコープ内で呼び出しをラップすることです.$apply:

scope.$apply(function() {
  tAttrs.$set('ng-click','clicked()');
});

したがって、Angular はあなたが変更したことを認識します。

ただし、Angular でよりクリーンに機能する可能性のある他のアプローチについては、Angular で属性を条件付きで適用する最良の方法は何ですか? を参照してください。

于 2013-10-22T00:16:43.580 に答える