File tree 2 files changed +66
-2
lines changed
2 files changed +66
-2
lines changed Original file line number Diff line number Diff line change @@ -78,15 +78,32 @@ $FilterProvider.$inject = ['$provide'];
78
78
function $FilterProvider ( $provide ) {
79
79
var suffix = 'Filter' ;
80
80
81
+ /**
82
+ * @ngdoc function
83
+ * @name ng.$controllerProvider#register
84
+ * @methodOf ng.$controllerProvider
85
+ * @param {string|Object } name Name of the filter function, or an object map of filters where
86
+ * the keys are the filter names and the values are the filter factories.
87
+ * @returns {Object } Registered filter instance, or if a map of filters was provided then a map
88
+ * of the registered filter instances.
89
+ */
81
90
function register ( name , factory ) {
82
- return $provide . factory ( name + suffix , factory ) ;
91
+ if ( isObject ( name ) ) {
92
+ var filters = { } ;
93
+ forEach ( name , function ( filter , key ) {
94
+ filters [ key ] = register ( key , filter ) ;
95
+ } ) ;
96
+ return filters ;
97
+ } else {
98
+ return $provide . factory ( name + suffix , factory ) ;
99
+ }
83
100
}
84
101
this . register = register ;
85
102
86
103
this . $get = [ '$injector' , function ( $injector ) {
87
104
return function ( name ) {
88
105
return $injector . get ( name + suffix ) ;
89
- }
106
+ } ;
90
107
} ] ;
91
108
92
109
////////////////////////////////////////
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ describe ( '$filter' , function ( ) {
4
+ var $filterProvider , $filter ;
5
+
6
+ beforeEach ( module ( function ( _$filterProvider_ ) {
7
+ $filterProvider = _$filterProvider_ ;
8
+ } ) ) ;
9
+
10
+ beforeEach ( inject ( function ( _$filter_ ) {
11
+ $filter = _$filter_ ;
12
+ } ) ) ;
13
+
14
+ describe ( 'provider' , function ( ) {
15
+ it ( 'should allow registration of filters' , function ( ) {
16
+ var FooFilter = function ( ) {
17
+ return function ( ) { return 'foo' ; } ;
18
+ } ;
19
+
20
+ $filterProvider . register ( 'foo' , FooFilter ) ;
21
+
22
+ var fooFilter = $filter ( 'foo' ) ;
23
+ expect ( fooFilter ( ) ) . toBe ( 'foo' ) ;
24
+ } ) ;
25
+
26
+ it ( 'should allow registration of a map of filters' , function ( ) {
27
+ var FooFilter = function ( ) {
28
+ return function ( ) { return 'foo' ; } ;
29
+ } ;
30
+
31
+ var BarFilter = function ( ) {
32
+ return function ( ) { return 'bar' ; } ;
33
+ } ;
34
+
35
+ $filterProvider . register ( {
36
+ 'foo' : FooFilter ,
37
+ 'bar' : BarFilter
38
+ } ) ;
39
+
40
+ var fooFilter = $filter ( 'foo' ) ;
41
+ expect ( fooFilter ( ) ) . toBe ( 'foo' ) ;
42
+
43
+ var barFilter = $filter ( 'bar' ) ;
44
+ expect ( barFilter ( ) ) . toBe ( 'bar' ) ;
45
+ } ) ;
46
+ } ) ;
47
+ } ) ;
You can’t perform that action at this time.
0 commit comments