0

I'm using angular.min.js file (AngularJS v1.6.4)

And I'm trying to implement a simple filter that reverses a string.

Here is my code:

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>

I get such result:

result

So we can see that:

  1. data binding works [OK];
  2. controller's function reversedMessage works [OK];
  3. filter doesn't work [Not OK] (heading <h2>{{ data.message | reverse }}</h2> is not visible)

Why is the custom filter not working?

3
  • 1
    You dont return from your filter - return item.split(... Commented Aug 22, 2017 at 16:14
  • You're missing a return on your filter... Commented Aug 22, 2017 at 16:17
  • Yes, you are right. Return is missing. Thanks for help! Commented Aug 22, 2017 at 16:25

2 Answers 2

3

return formatted output from your filter.

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

Check Here

Sign up to request clarification or add additional context in comments.

Comments

2

// You need to return the filtered data.

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

1 Comment

Forgot to write Return statement. Yes. Thanks for your answer!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.