0

我正在写一个自定义指令。我希望该指令向 attrs.$set('ng-click','clicked()'); 我尝试在编译函数中添加 ng-click 指令以及 pre 和 post 链接函数的元素添加 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 回答