AngularJS中动态添加的指令

时间:2013-10-21 23:21:18

标签: angularjs angularjs-directive

我正在写一个自定义指令。我希望该指令在元素中添加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!!!');
                        };
                    }
                };
            }
        };
    });

1 个答案:

答案 0 :(得分:1)

您已经通过jQuery添加了该属性,因此Angular不知道它。快速回答是将调用包装在范围内。$ apply:

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

所以Angular知道你改变了它。

但是对于其他方法,可以使用Angular更清晰地查看What is the best way to conditionally apply attributes in Angular?

相关问题