2014-11-04 3 views
0

У меня есть эти директивыполучить значение дочернего элемента директивы

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); 

функция так долго, я попытался упростить его, поскольку я могу

, что я ожидал рендер «#/кошки/1» но то, что оказывается есть «#cats/{{cat.id}}»

так, как я могу получить значение выражения не выражение его самостоятельно

+0

Аналогичный вопрос здесь: http://stackoverflow.com/questions/26660495/cani-i- получить-на-скомпилированных HTML-о-ан-углового-элемента/26660649 # 26660649 –

ответ

0

Вы должны использовать ng-href (вместо href) в шаблоне:

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

и метод обертка getVal() в $timeout получить href атрибут после цикла дайджеста:

$timeout(function() { 
    element.getVal(); 
}) 

PS: Я не знаю, чего вы пытаетесь достичь, но чтение значений атрибутов из вашего шаблона в вашу область действия, безусловно, не самая лучшая практика. Лучшей идеей было бы построить атрибут href в вашей директиве, используя его прямо в вашем представлении (например, scope.carUrl = '#/cat/' + cat.id', а затем <a ng-href="{{catUrl}}">)

Смежные вопросы