温故知新:Anglarのfilter

2274 ワード

Angularの中のfiltreは個人的には理解できますが、文字通りフィルタは変数をフィルタして処理します.処理後の変数に戻ります.例えば、FilterNameはフィルタの名前です.peopleは処理する変数の量です.paraはオプションのパラメータです.実は、FilterNameは関数であり、その戻り値も関数であり、peopleとparaはこの戻り値のパラメータである.具体例を見てみます.
filter.

<html>
	<title>Test Filter</title>
	<head>
		<script src='E:\Angularjs\angular-1.0.8\angular.js'></script>
		<script src='E:\filter.js'></script>
	</head>
	<body ng-app='filter' ng-controller='FilterController'>
		[list]
	        <li ng-repeat='people in peoples' style='background-color:{{people.name[0] | SelectName}}'>
			{{people.name}}
			</li>
		[/list]
	</body>
</html>
filter.js

function FilterController($scope){
	$scope.peoples = [{'name':'A1'},{'name':'A2'},{'name':'A3'},{'name':'B1'},{'name':'B2'},{'name':'B3'},{'name':'C1'},{'name':'C2'},{'name':'C3'},{'name':'D1'},{'name':'D2'},{'name':'D3'}];	
}

angular.module('filter',[]).controller('FilterController',FilterController).filter('SelectName',function(){
	var color = function(name){
		switch(name){
			case 'A':return 'red';
			case 'B':return 'green';
			case 'C':return 'blue';
			case 'D':return 'yellow';
		}
	}
	return color;
});
filter.jsのfilterのように、SelectNameというfilterをカスタマイズし、プログラムの「SelectName」後のfunctionはこのfilterの関数体であり、その内部で匿名関数を定義して、その割当値をカラーに与え、最後にこのカラーに戻ります.つまり、この匿名関数に戻ります.
次にこの関数の機能を見ます.nameの値によって色が違ってきます.
filterを見てください.ここではどのように呼び出されますか?ng-repeat属性の
  • タグがあります.controllerの中で、scope.peoplesのリストですが、単純な列ではなく、$scope.peoplesの名前の最初の文字によって色が違ってきます.これは上に書いた行内フィルタを使いました.124 SelectName}
    説明してください.SelectNameはカラー関数という名前を返します.その後、peopleはそのnameを0と表記した要素をこの関数に導入しました.関数処理が終わったら結果returnをbackground-カラーの後ろに送ります.このように
  • ラベルは色が違っています.