BREAKING CHANGE:
Previously, route configuration took a controller constructor function as the value of
`component` in a route definition:
```
$route.config([
  { route: '/', component: MyController }
])
```
Based on the name of the controller, we used to use a componentMapper service to
determine what template to pair with each controller, how to bind the instance to
the $scope.
To make the 1.x router more semantically alligned with Angular 2, we now route to a directive.
Thus a route configuration takes a normalized directive name:
```
$route.config([
  { route: '/', component: 'myDirective' }
])
```
BREAKING CHANGE:
In order to avoid name collisions, lifecycle hooks are now prefixed with `$`. Before:
```
MyController.prototype.onActivate = ...
```
After:
```
MyController.prototype.$onActivate = ...
```
Same for `$canActivate` (which now lives on the directive factory function),
`$canDeactivate`, `$canReuse`, and `$onDeactivate` hooks.
		
	
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
describe('$$directiveIntrospector', function () {
 | 
						|
 | 
						|
  var $compileProvider;
 | 
						|
 | 
						|
  beforeEach(function() {
 | 
						|
    module('ng');
 | 
						|
    module('ngComponentRouter');
 | 
						|
    module(function(_$compileProvider_) {
 | 
						|
      $compileProvider = _$compileProvider_;
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  it('should call the introspector function whenever a directive factory is registered', inject(function ($$directiveIntrospector) {
 | 
						|
    var spy = jasmine.createSpy();
 | 
						|
    $$directiveIntrospector(spy);
 | 
						|
    function myDir(){}
 | 
						|
    $compileProvider.directive('myDir', myDir);
 | 
						|
 | 
						|
    expect(spy).toHaveBeenCalledWith('myDir', myDir);
 | 
						|
  }));
 | 
						|
 | 
						|
  it('should call the introspector function whenever a directive factory is registered with array annotations', inject(function ($$directiveIntrospector) {
 | 
						|
    var spy = jasmine.createSpy();
 | 
						|
    $$directiveIntrospector(spy);
 | 
						|
    function myDir(){}
 | 
						|
    $compileProvider.directive('myDir', ['foo', myDir]);
 | 
						|
 | 
						|
    expect(spy).toHaveBeenCalledWith('myDir', myDir);
 | 
						|
  }));
 | 
						|
 | 
						|
  it('should retrieve a factory based on directive name', inject(function ($$directiveIntrospector) {
 | 
						|
    function myDir(){}
 | 
						|
    $compileProvider.directive('myDir', ['foo', myDir]);
 | 
						|
    expect($$directiveIntrospector.getTypeByName('myDir')).toBe(myDir);
 | 
						|
  }));
 | 
						|
});
 |