如何替换角度属性

时间:2014-04-02 06:04:54

标签: javascript angularjs

如何替换已包含值的Angular属性?例如:

angular.module('app', [])
.directive('edit', function(){
  return {
    template: '<a ng-href="{{data}}">Link Text</a>',
    replace: true,
    link: function(scope, elm, attr){
      scope.data = 'http://www.example.com';
    }
  };
});

HTML:

<a edit ng-href="test"></a>

只需将链接网址附加到&#34; test&#34; HREF。我尝试使用

elm.attr('ng-href', '{{data}}');

和这个想法的许多变化,但它没有工作。

1 个答案:

答案 0 :(得分:1)

您可以在指令中使用compile函数,并在其中重新声明此属性:

.directive('edit', ['$timeout', function($timeout) {
   return {
      template: '<a ng-href="{{data}}">Link Text</a>',
      replace: true,
      restrict:'A',
      compile:function(elm, attr){
        return {
          pre: function preLink(scope, iElement, iAttrs, controller) { 
             iAttrs.ngHref = "{{data}}";
          },
          post: function postLink(scope, iElement, iAttrs, controller) {
            scope.data = 'http://www.example.com';
          }
        }

      }
    }
  }])

http://plnkr.co/edit/lBA9xR1VbWHqHbc5KG7w?p=preview