2017-04-18 2 views
1

Ich möchte jedes Zeichen als ★ Zeichen in meinem Suchfeld ersetzen, weil in meinem Datenarray alle meine Sterndaten so gespeichert werden.AngularJS Ersetzen Char für Filter

Ich habe meinen Code unten hinzugefügt.

Ich bin sehr neu in Angular. Das habe ich noch nicht erreicht.

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

 
angular.module('myApp') 
 
    .directive('hide-characters', HideCharactersDirective); 
 

 
function HideCharactersDirective() { 
 
    return { 
 
    restrict: 'A', 
 
    require: ['ngModel'], 
 
    link: function(scope, element, attrs, ctrls) { 
 
     var ngModelController = ctrls[0]; 
 

 
     ngModelController.$formatters.push(function(viewValue) { 
 
     return viewValue.replace(/./g, '*'); 
 
     }); 
 
    } 
 
    }; 
 
} 
 

 

 
app.controller("myCtrl", function($scope) { 
 
    $scope.records = [{ 
 
     "Name": "Alfreds Futterkiste", 
 
     "Star": "★★★" 
 
    }, 
 
    { 
 
     "Name": "Berglunds snabbköp", 
 
     "Star": "★" 
 
    }, 
 
    { 
 
     "Name": "Centro comercial Moctezuma", 
 
     "Star": "★★★★" 
 
    }, 
 
    { 
 
     "Name": "Ernst Handel", 
 
     "Star": "★★" 
 
    } 
 
    ] 
 
});
<html lang=""> 
 

 
<head> 
 
    <base target="_blank"> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
    <title></title> 
 

 

 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
</head> 
 

 
<body ng-app="myApp"> 
 

 

 
    <table ng-controller="myCtrl" border="1"> 
 
    <input hide-characters ng-model="search.Star" type="text"> 
 

 
    <tr ng-repeat="x in records | filter:search"> 
 
     <td>{{x.Name}}</td> 
 
     <td>{{x.Star}}</td> 
 
    </tr> 
 
    </table> 
 
</body> 
 

 
</html>

+0

so, wenn ich 'test' (4 Zeichen) in das Suchfeld eingeben, möchten Sie es' '**** geändert werden (4 Sterne), oder? – tanmay

Antwort

1

Von dem, was ich verstanden habe, wollen Sie ein beliebiges Zeichen in der Suchleiste zu einem geschrieben ändern.

Ich würde einfach eine ng-change hinzufügen, die mir den Wert ng-model gibt und ich würde jedes Zeichen mit RegExp ersetzen (wie Sie es versucht haben).

working unten Snippet:

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

 
app.controller("myCtrl", function($scope) { 
 
    $scope.changeValue = function(value) { 
 
    $scope.search.Star = value.replace(/./g, '★') 
 
    } 
 

 
    $scope.records = [{ 
 
     "Name": "Alfreds Futterkiste", 
 
     "Star": "★★★" 
 
    }, 
 
    { 
 
     "Name": "Berglunds snabbköp", 
 
     "Star": "★" 
 
    }, 
 
    { 
 
     "Name": "Centro comercial Moctezuma", 
 
     "Star": "★★★★" 
 
    }, 
 
    { 
 
     "Name": "Ernst Handel", 
 
     "Star": "★★" 
 
    } 
 
    ] 
 
});
<html lang=""> 
 

 
<head> 
 
    <base target="_blank"> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
    <title></title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
</head> 
 

 
<body ng-app="myApp" ng-controller="myCtrl"> 
 

 
    <table border="1"> 
 
    <input ng-change="changeValue(search.Star)" ng-model="search.Star" type="text"> 
 

 
    <tr ng-repeat="x in records | filter:search"> 
 
     <td>{{x.Name}}</td> 
 
     <td>{{x.Star}}</td> 
 
    </tr> 
 
    </table> 
 
</body> 
 

 
</html>

+0

Das ist was ich genau will. Danke vielmals. – Grcn

+0

@Grcn froh, dass geholfen hat! :) – tanmay