2015-06-03 2 views
0

У меня есть фильтр, который превращает хештегов в ссылки:Угловые директивы не отображается в исходном HTML

app.filter('hashtags', function($filter) { 
    return function(text, target) { 
    if (!text) return text; 
    var replacedText = text.replace(/#(\w*[a-zA-Z_]+\w*)/gim, '<a ng-href="/posts?q=%23$1">#$1</a>'); 
    return replacedText; 
    }; 
}); 

Однако, когда он отображается на странице, то хэштегом кликабельна и окруженную в якорных тегах, но ng-href не существует, где можно найти. Похоже на это.

<a>#hashtag</a> 

Почему угловая директива не появляется?

Возможно, стоит отметить, что появляются классы. Если бы я изменить эту строку следующим образом:

var replacedText = text.replace(/#(\w*[a-zA-Z_]+\w*)/gim, '<a class="test" ng-href="/posts?q=%23$1">#$1</a>'); 

Выход в HTML будет:

<a class="test">#hashtag</a> 

ответ

1

ng-href должны были бы быть выведены из фильтра и поместить в шаблон, в котором он быть использованным.

<div ng-repeat="tag in tags"> 
    <a class="test" ng-href="{{tag | hashtag}}">{{tag}}</a> 
</div> 

Причина этого заключается в том, что угловое не $compile при фильтрации.

См:

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