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);
|
|
}));
|
|
});
|