过滤器中的链式函数

时间:2014-01-06 18:21:29

标签: javascript angularjs

对于myLongString,我想通过

过滤它

(1)保留第一个y字符(2)使其全部为小写

HTML

<body ng-controller="MyCtrl">
    <span>{{myLongString | limitTo:5 | lowercase}}</span>
</body>

的JavaScript

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.myLongString = "EEEEEEEEEEEE";
    $scope.limitTo = function(x, y) {
        console.log("x:", x, "y:", y); 
         x.slice(0, y);   
    }
    $scope.lowercase = function () {
        $scope.myLongString = $scope.myLongString.toLowerCase();
    }
}

文字全部都是低级的,但是我看不到前5个字符的切片。另外,console.log没有出现。

为什么?

http://jsfiddle.net/r9MTc/10/

3 个答案:

答案 0 :(得分:3)

limitTo是内置的angularjs过滤器,就像lowercase一样。

答案 1 :(得分:1)

只需创建filter,例如:

angular.module('myApp').
 filter('substring', function(){
     return function(str, length){
         return str.substring(0, length);
     };
 });

http://jsfiddle.net/CQZAL/

答案 2 :(得分:0)

我不知道Angular,但让它发挥作用:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.myLongString = "EEEEEEEEEEEE";
    //No more needed here    
}

myApp.filter('limitTo', [ function() {      
  return function(str, size) {
     return str.slice(0, size);
  };
}]);

请注意,您的lowercase转换无效,正在运行的转换是内置的。

小提琴:http://jsfiddle.net/edgarinvillegas/r9MTc/11/

干杯