获取指令的子元素的值

时间:2014-11-04 17:20:33

标签: javascript jquery angularjs angularjs-directive

我有这些指令

  app.directive("myarticle",function($timeout){
   return {
   restrict: "E",
     replace: true,
     templateUrl: "templates/article.html",

    link: function(scope, element, attrs) {

   element.getVal()
   }
   ,
    scope: {
   cat: "=",
  mainurl: "="
}
  }

});

这是指令模板

 <div class="span2 ">
   <a href="#/cat/{{cat.id}}"> link to cat</a>
 </div>

jquery getVal函数

  (function($) {

    $.fn.getVal = function() {

    this.each(function() {
  var url =$(this).find("a").attr("href");
 console.log(url);
 });
  };
 })(jQuery);

功能太长了,我试着简化它,因为我可以

我期望渲染的是&#34;#/ cats / 1&#34; 但呈现的是&#34; #cats / {{cat.id}}&#34;

那么我怎样才能得到表达式的值而不是它自己的表达式

1 个答案:

答案 0 :(得分:0)

您必须在模板中使用ng-href(而不是href):

<div class="span2">
   <a ng-href="#/cat/{{cat.id}}"> link to cat</a>
</div>

getVal()中使用wrap $timeout方法在摘要周期后检索href属性:

$timeout(function() {
    element.getVal();
})
PS:我不知道你想要实现什么,但是从模板中读取属性值到你的范围绝对不是最好的做法。更好的想法是在您的指令中构建href属性,直接在您的视图中使用它(例如scope.carUrl = '#/cat/' + cat.id'然后<a ng-href="{{catUrl}}">