【发布时间】:2014-01-04 14:22:34
【问题描述】:
我尝试根据自定义指令的属性值更新元素内容。下面的代码运行良好,但在站点加载时只运行一次。属性值的动态更新不会触发任何事件。我做错了什么?
ng-repeat 中的标记(匹配中的匹配):
<div ng-tipp-result="[[getIconClass(match)]]"></div>
指令:
myApp.directive('ngTippResult', function() {
return {
restrict: 'A',
link: function(scope, elem, attrs) {
var content = "s";
scope.$watch(attrs.ngTippResult, function(v){
switch(v){
case 1: content = '<i class="icon-circle"></i>';break;
case 2: content = '<i class="icon-X"></i>';break;
case 3: content = '<i class="icon-Y"></i>';break;
case 4: content = '<i class="icon-Z"></i>';break;
case 5: content = '<i class="icon-ok"></i>';break;
case 6: content = '<i class="icon-minus"></i>';break;
}
elem.html(content);
});
}
};
});
编辑:
使用属性名称作为字符串解决了这个问题,但导致了另一个问题,我遇到了上面代码的无限摘要循环。
<li ng-repeat="match in matches">
<i class="pull-right [[getIconClass(match)]]"></i>
</li>
getIconClass 是一个控制器方法,它根据匹配返回 1 到 6 的值。
【问题讨论】:
标签: angularjs angularjs-directive