Jquery 如何使指令使用过滤的HTML属性?
我有一个指令,它构建了一个弹出菜单,可以自动从HTML中收集数据。实际上,它应该将一组符合引导转盘的元素转换为一个列表。一个问题是,每个Jquery 如何使指令使用过滤的HTML属性?,jquery,html,angularjs,twitter-bootstrap,angularjs-directive,Jquery,Html,Angularjs,Twitter Bootstrap,Angularjs Directive,我有一个指令,它构建了一个弹出菜单,可以自动从HTML中收集数据。实际上,它应该将一组符合引导转盘的元素转换为一个列表。一个问题是,每个.item都带有一个属性,该属性的字符串值经过过滤,如: HTML: 我得到了HTML中使用的原始未处理字符串的菜单: {{'My string' | myfilter}} {{'My string 2' | myfilter}} 据我所知,attrs.$observe适用于绑定到指令的元素的属性,但不适用于外部元素 如何使用过滤后的字符串?我尝试将优先级设置
.item
都带有一个属性,该属性的字符串值经过过滤,如:
HTML:
我得到了HTML中使用的原始未处理字符串的菜单:
{{'My string' | myfilter}}
{{'My string 2' | myfilter}}
据我所知,attrs.$observe适用于绑定到指令的元素的属性,但不适用于外部元素
如何使用过滤后的字符串?我尝试将优先级设置为极值,但没有效果。在您的指令中,您必须将transclude属性设置为true,并且必须使用带有ngTransclude属性的html模板来处理html标记内的默认角度过滤器 供参考:
我猜您忽略了编译html模板。 试一试
$compile('
...
')
您可以使用ng attr
,这将是更方便的解决方案ng attr data title
将计算插值{{}
&使用值创建数据标题属性
不要使用data title=“{{'My string'| myfilter}}”
使用ng attr data title=“{{'My string'| myfilter}}”
标记
<div class="item" ng-attr-data-title="{{'My string' | myfilter}}">
...
</div>
起初我想:抓得好——我忘了转移!但它也不起作用。你的意思是我应该将ng transclude添加到每个旋转木马幻灯片?我希望你必须将ng transclude属性添加到。。。工作时没有一点转换(既不是js也不是html)。但请记住,我的指令并没有输出模板,而是为下拉列表收集数据。谢谢,@pankjparkar。不幸的是,这对我不起作用。无论是
$(el.attr('ng-attr-data-title')}还是$(el.attr('data-title')})
都不执行此任务。是否使用ng repeat
呈现此元素?否。这是一个单一的例子。提供菜单项字符串的转盘幻灯片在$中拍摄。每个loop@nuton检查我的编辑,你可以使用$parse
线索是使用$interpolate
。谢谢你的帮助——把你的答案标记为是把我推向正确方向的答案。
{{'My string' | myfilter}}
{{'My string 2' | myfilter}}
$compile('
<div class="item" data-title="{{'My string' | myfilter}}">
...
</div>
')
<div class="item" ng-attr-data-title="{{'My string' | myfilter}}">
...
</div>
.directive('sectionBuilder', function($interpolate){
return {
priority:100,
restrict: 'C',
link: function(scope, element, attrs){
var data = [];
$('.carousel-inner > .item', '#carousel').each(function(i, el){
data.push({k: i, v: $interpolate($(el).attr('data-title'))})
});
}
}
})