@@ -333,6 +333,7 @@ function setupModuleLoader(window) {
333
333
* In order to make the definition easier, components enforce best practices like controllerAs
334
334
* and default behaviors like scope isolation, restrict to elements and allow transclusion.
335
335
*
336
+ * <br />
336
337
* Here are a few examples of how you would usually define components:
337
338
*
338
339
* ```js
@@ -357,7 +358,49 @@ function setupModuleLoader(window) {
357
358
*
358
359
* ```
359
360
*
360
- * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
361
+ * <br />
362
+ * Components are also useful as route templates (e.g. when using
363
+ * {@link ngRoute ngRoute}):
364
+ *
365
+ * ```js
366
+ * var myMod = angular.module('myMod', ['ngRoute']);
367
+ *
368
+ * myMod.component('home', {
369
+ * template: '<h1>Home</h1><p>Hello, {{ home.user.name }} !</p>',
370
+ * controller: function() {
371
+ * this.user = {name: 'world'};
372
+ * }
373
+ * });
374
+ *
375
+ * myMod.config(function($routeProvider) {
376
+ * $routeProvider.when('/', {
377
+ * template: '<home></home>'
378
+ * });
379
+ * });
380
+ * ```
381
+ *
382
+ * <br />
383
+ * When using {@link ngRoute.$routeProvider $routeProvider}, you can often avoid some
384
+ * boilerplate, by assigning the resolved dependencies directly on the route scope:
385
+ *
386
+ * ```js
387
+ * var myMod = angular.module('myMod', ['ngRoute']);
388
+ *
389
+ * myMod.component('home', {
390
+ * template: '<h1>Home</h1><p>Hello, {{ home.user.name }} !</p>',
391
+ * bindings: {user: '='}
392
+ * });
393
+ *
394
+ * myMod.config(function($routeProvider) {
395
+ * $routeProvider.when('/', {
396
+ * template: '<home user="$resolve.user"></home>',
397
+ * resolve: {user: function($http) { return $http.get('...'); }}
398
+ * });
399
+ * });
400
+ * ```
401
+ *
402
+ * <br />
403
+ * See also {@link ng.$compileProvider#directive $compileProvider.directive()}.
361
404
*/
362
405
component : function ( name , options ) {
363
406
function factory ( $injector ) {
0 commit comments