为什么AngularJS自定义过滤器不起作用?

时间:2017-08-22 16:11:21

标签: angularjs angularjs-filter

我正在使用angular.min.js文件(AngularJS v1.6.4)

我正在尝试实现一个反转字符串的简单过滤器。

这是我的代码:

main.js:

var app = angular.module("angularBlackbox", []);

app.filter('reverse', function () {
   return function (item) {
       item.split("").reverse().join("");
   };
});

app.controller("MyController", function ($scope) {
    $scope.data = {
        message: ""
    };

    $scope.reversedMessage = function (message) {
        return message.split("").reverse().join("");
    }
});

的index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AngularJS Blackbox</title>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-theme.min.css">
</head>
<body>
<div ng-app="angularBlackbox">
    <div ng-controller="MyController">
        <input type="text" ng-model="data.message">
        <h1>{{ data.message }}</h1>
        <h1>{{ reversedMessage(data.message) }}</h1>
        <h2>{{ data.message | reverse }}</h2>
    </div>
</div>

<script type="text/javascript" src="js/angular.min.js"></script>
<script type="text/javascript" src="main.js"></script>
</body>
</html>

我得到了这样的结果:

result

所以我们可以看到:

  1. 数据绑定有效[确定];
  2. 控制器的功能reversedMessage有效[确定];
  3. 过滤器不起作用[不行](标题<h2>{{ data.message | reverse }}</h2>不可见)
  4. 为什么自定义过滤器不起作用?

2 个答案:

答案 0 :(得分:3)

来自过滤器的

return格式化输出。

app.filter('reverse', function () {
   return function (item) {
       //returned reversed string from here.
       return item.split("").reverse().join("");
   };
});

Check Here

答案 1 :(得分:2)

//您需要返回过滤后的数据。

app.filter('reverse', function () {
   return function (item) {
       return item.split("").reverse().join("");
   };
});