AngularJS在控制器内重新应用过滤器不会更新我的内容

时间:2014-04-03 13:44:25

标签: angularjs filter ng-repeat

更新:我在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中应用更改。我错过了什么?

感谢。

0 个答案:

没有答案