mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-18 15:50:22 +00:00
103 lines
3 KiB
JavaScript
103 lines
3 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @ngdoc object
|
|
* @name ng.$filterProvider
|
|
* @description
|
|
*
|
|
* Filters are just functions which transform input to an output. However filters need to be Dependency Injected. To
|
|
* achieve this a filter definition consists of a factory function which is annotated with dependencies and is
|
|
* responsible for creating a filter function.
|
|
*
|
|
* <pre>
|
|
* // Filter registration
|
|
* function MyModule($provide, $filterProvider) {
|
|
* // create a service to demonstrate injection (not always needed)
|
|
* $provide.value('greet', function(name){
|
|
* return 'Hello ' + name + '!';
|
|
* });
|
|
*
|
|
* // register a filter factory which uses the
|
|
* // greet service to demonstrate DI.
|
|
* $filterProvider.register('greet', function(greet){
|
|
* // return the filter function which uses the greet service
|
|
* // to generate salutation
|
|
* return function(text) {
|
|
* // filters need to be forgiving so check input validity
|
|
* return text && greet(text) || text;
|
|
* };
|
|
* });
|
|
* }
|
|
* </pre>
|
|
*
|
|
* The filter function is registered with the `$injector` under the filter name suffixe with `Filter`.
|
|
* <pre>
|
|
* it('should be the same instance', inject(
|
|
* function($filterProvider) {
|
|
* $filterProvider.register('reverse', function(){
|
|
* return ...;
|
|
* });
|
|
* },
|
|
* function($filter, reverseFilter) {
|
|
* expect($filter('reverse')).toBe(reverseFilter);
|
|
* });
|
|
* </pre>
|
|
*
|
|
*
|
|
* For more information about how angular filters work, and how to create your own filters, see
|
|
* {@link guide/dev_guide.templates.filters Understanding Angular Filters} in the angular Developer
|
|
* Guide.
|
|
*/
|
|
/**
|
|
* @ngdoc method
|
|
* @name ng.$filterProvider#register
|
|
* @methodOf ng.$filterProvider
|
|
* @description
|
|
* Register filter factory function.
|
|
*
|
|
* @param {String} name Name of the filter.
|
|
* @param {function} fn The filter factory function which is injectable.
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc function
|
|
* @name ng.$filter
|
|
* @function
|
|
* @description
|
|
* Filters are used for formatting data displayed to the user.
|
|
*
|
|
* The general syntax in templates is as follows:
|
|
*
|
|
* {{ expression [| filter_name[:parameter_value] ... ] }}
|
|
*
|
|
* @param {String} name Name of the filter function to retrieve
|
|
* @return {Function} the filter function
|
|
*/
|
|
$FilterProvider.$inject = ['$provide'];
|
|
function $FilterProvider($provide) {
|
|
var suffix = 'Filter';
|
|
|
|
function register(name, factory) {
|
|
return $provide.factory(name + suffix, factory);
|
|
}
|
|
this.register = register;
|
|
|
|
this.$get = ['$injector', function($injector) {
|
|
return function(name) {
|
|
return $injector.get(name + suffix);
|
|
}
|
|
}];
|
|
|
|
////////////////////////////////////////
|
|
|
|
register('currency', currencyFilter);
|
|
register('date', dateFilter);
|
|
register('filter', filterFilter);
|
|
register('json', jsonFilter);
|
|
register('limitTo', limitToFilter);
|
|
register('lowercase', lowercaseFilter);
|
|
register('number', numberFilter);
|
|
register('orderBy', orderByFilter);
|
|
register('uppercase', uppercaseFilter);
|
|
}
|