Hallo Ich bin neu in AngularJS und traf eine Frage. Ich muss einen benutzerdefinierten Filter erstellen, um eine Zeichenfolge zu filtern, der Filter kann jedoch das Eingabeergebnis nicht synchronisieren. Da die filter.js in eine getrennte JS-Datei gemacht werden muss, dachte ich, ich muss $ scope.delimiter von controller.js nach filter.js importieren, aber ich weiß nicht, wie es geht. Vielen Dank im Voraus. HTML:AngularJS Filter synchronisiert nicht den Eingangswert von Modul
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Tokenizer Filter</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<script src="controller.js"></script>
<script src="filter.js"></script>
</head>
<body ng-app="myApp">
<div ng-controller="TokenizeControler">
<p>Input: <input ng-model="greeting" /></p>
<p>Delimiter: <input id="delimiter" ng-model="delimiter" /></p>
<p>{{delimiter}}</p>
<p>{{greeting | tokenize: defualt}}</p>
<p>{{greeting | tokenize}}</p>
</div>
</body>
</html>
Controller.js:
var myApp = angular
.module("myApp", [])
.controller("TokenizeControler",
function ($scope) {
$scope.greeting = "Angular is awesome";
$scope.delimiter = "#";
$scope.defualt = true;
});
filter.js:
myApp.filter("tokenize", function() {
return function (content, defualt) {
if (angular.isString(content)) {
var noSpace, output;
noSpace = content.replace(/ +/g, "");
if (defualt) {
return output = noSpace.split('').join(',') + " (Default)";
} else {
delimiter = document.getElementById('delimiter').value;
return output = noSpace.split('').join(delimiter) + "(With option)";
}
} else {
return content;
}
};
});
lassen Sie mich klarstellen. Sie entfernen alle Instanzen von Leerzeichen, in denen sich ein oder mehrere Leerzeichen befinden, und teilen sie dann auf, wenn kein Leerzeichen mehr vorhanden ist? –
check this [antwort auf stackoverflow] (http://stackoverflow.com/questions/26650656/angularjs-access-scope-from-controller-in-custom-filter) ich glaube, es wird nützlich sein. –
Eigentlich muss ich eine Zeichenfolge im Eingabefeld mit einem Trennzeichen im Trennzeichenfeld trennen. Zum Beispiel ist das Eingabefeld standardmäßig "Angular is awesome", wenn das Trennzeichen "#" ist, muss ich es wie folgt umstellen: "A # n # g # u # l # a # r # i # s # a # w # e # s # o # m # e " –