更新:我在plunker
上添加了一个示例我遇到过滤器的问题,我尝试在控制器内重新应用。这个过滤器在ng-repeat内,没有任何反应。 (我认为这是问题)
概念:我截断文本并添加更多按钮以显示所有内容。
我的模板是这样的:
<tr ng-repeat="app in apps">
<td>
<ul>
<li><a href="{[{ app.trackViewUrl }]}">{[{ app.trackName }]}</a></li>
<li><strong>Description:</strong> {[{ app.description | characters:255 }]}
<a ng-click="changeLength(app)"><strong>More</strong></a>
</li>
</ul>
</td>
</tr>
ps:我删除了所有与ng-repeat不相关的部分。
我的控制器:
$scope.changeLength = function (app) {
var txt = app.description.length;
var description = $filter('characters')(app.description, txt, true);
return description;
};
我使用此过滤器truncate
angular.module('truncate', [])
.filter('characters', function () {
return function (input, chars, breakOnWord) {
if (isNaN(chars)) return input;
if (chars <= 0) return '';
if (input && input.length > chars) {
input = input.substring(0, chars);
if (!breakOnWord) {
var lastspace = input.lastIndexOf(' ');
//get last space
if (lastspace !== -1) {
input = input.substr(0, lastspace);
}
}else{
while(input.charAt(input.length-1) === ' '){
input = input.substr(0, input.length -1);
}
}
return input + '...';
}
return input;
};
});
过滤器是调用,他向我发回描述,但没有在DOM中应用更改。我错过了什么?
感谢。