我有这些指令
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;
那么我怎样才能得到表达式的值而不是它自己的表达式
答案 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}}">
)