@@ -18,6 +18,7 @@ import {
18
18
typeOf ,
19
19
} from '@ember/-internals/runtime' ;
20
20
import { EMBER_FRAMEWORK_OBJECT_OWNER_ARGUMENT } from '@ember/canary-features' ;
21
+ import Controller from '@ember/controller' ;
21
22
import { assert , deprecate , info , isTesting } from '@ember/debug' ;
22
23
import { ROUTER_EVENTS } from '@ember/deprecated-features' ;
23
24
import { assign } from '@ember/polyfills' ;
@@ -235,9 +236,9 @@ class Route extends EmberObject implements IRoute {
235
236
@public
236
237
*/
237
238
paramsFor ( name : string ) {
238
- let route : Route = getOwner ( this ) . lookup ( `route:${ name } ` ) ;
239
+ let route = getOwner ( this ) . lookup < Route > ( `route:${ name } ` ) ;
239
240
240
- if ( ! route ) {
241
+ if ( route === undefined ) {
241
242
return { } ;
242
243
}
243
244
@@ -1272,7 +1273,7 @@ class Route extends EmberObject implements IRoute {
1272
1273
@since 1.0.0
1273
1274
@public
1274
1275
*/
1275
- setupController ( controller : any , context : { } , _transition : Transition ) {
1276
+ setupController ( controller : Controller , context : { } , _transition : Transition ) {
1276
1277
// eslint-disable-line no-unused-vars
1277
1278
if ( controller && context !== undefined ) {
1278
1279
set ( controller , 'model' , context ) ;
@@ -1303,26 +1304,25 @@ class Route extends EmberObject implements IRoute {
1303
1304
@since 1.0.0
1304
1305
@public
1305
1306
*/
1306
- controllerFor ( name : string , _skipAssert : boolean ) {
1307
+ controllerFor ( name : string , _skipAssert : boolean ) : Controller {
1307
1308
let owner = getOwner ( this ) ;
1308
- let route : Route = owner . lookup ( `route:${ name } ` ) ;
1309
- let controller : string ;
1309
+ let route = owner . lookup < Route > ( `route:${ name } ` ) ;
1310
1310
1311
1311
if ( route && route . controllerName ) {
1312
1312
name = route . controllerName ;
1313
1313
}
1314
1314
1315
- controller = owner . lookup ( `controller:${ name } ` ) ;
1315
+ let controller = owner . lookup < Controller > ( `controller:${ name } ` ) ;
1316
1316
1317
1317
// NOTE: We're specifically checking that skipAssert is true, because according
1318
1318
// to the old API the second parameter was model. We do not want people who
1319
1319
// passed a model to skip the assertion.
1320
1320
assert (
1321
1321
`The controller named '${ name } ' could not be found. Make sure that this route exists and has already been entered at least once. If you are accessing a controller not associated with a route, make sure the controller class is explicitly defined.` ,
1322
- Boolean ( controller ) || _skipAssert === true
1322
+ controller !== undefined || _skipAssert === true
1323
1323
) ;
1324
1324
1325
- return controller ;
1325
+ return controller ! ;
1326
1326
}
1327
1327
1328
1328
/**
@@ -1408,7 +1408,7 @@ class Route extends EmberObject implements IRoute {
1408
1408
name = _name ;
1409
1409
}
1410
1410
1411
- let route : Route = owner . lookup ( `route:${ name } ` ) ;
1411
+ let route = owner . lookup < Route > ( `route:${ name } ` ) ;
1412
1412
// If we are mid-transition, we want to try and look up
1413
1413
// resolved parent contexts on the current transitionEvent.
1414
1414
if ( transition !== undefined && transition !== null ) {
@@ -1812,7 +1812,9 @@ function buildRenderOptions(
1812
1812
) ;
1813
1813
1814
1814
let owner = getOwner ( route ) ;
1815
- let name , templateName , into , outlet , controller : string | { } , model ;
1815
+ let name , templateName , into , outlet , model ;
1816
+ let controller : Controller | string | undefined = undefined ;
1817
+
1816
1818
if ( options ) {
1817
1819
into = options . into && options . into . replace ( / \/ / g, '.' ) ;
1818
1820
outlet = options . outlet ;
@@ -1829,31 +1831,32 @@ function buildRenderOptions(
1829
1831
templateName = name ;
1830
1832
}
1831
1833
1832
- if ( ! controller ! ) {
1834
+ if ( controller === undefined ) {
1833
1835
if ( isDefaultRender ) {
1834
- controller = route . controllerName || owner . lookup ( `controller:${ name } ` ) ;
1836
+ controller = route . controllerName || owner . lookup < Controller > ( `controller:${ name } ` ) ;
1835
1837
} else {
1836
- controller = owner . lookup ( `controller:${ name } ` ) || route . controllerName || route . routeName ;
1838
+ controller =
1839
+ owner . lookup < Controller > ( `controller:${ name } ` ) || route . controllerName || route . routeName ;
1837
1840
}
1838
1841
}
1839
1842
1840
- if ( typeof controller ! === 'string' ) {
1841
- let controllerName = controller ! ;
1842
- controller = owner . lookup ( `controller:${ controllerName } ` ) ;
1843
+ if ( typeof controller === 'string' ) {
1844
+ let controllerName = controller ;
1845
+ controller = owner . lookup < Controller > ( `controller:${ controllerName } ` ) ;
1843
1846
assert (
1844
1847
`You passed \`controller: '${ controllerName } '\` into the \`render\` method, but no such controller could be found.` ,
1845
- isDefaultRender || Boolean ( controller )
1848
+ isDefaultRender || controller !== undefined
1846
1849
) ;
1847
1850
}
1848
1851
1849
1852
if ( model ) {
1850
1853
( controller ! as any ) . set ( 'model' , model ) ;
1851
1854
}
1852
1855
1853
- let template : TemplateFactory = owner . lookup ( `template:${ templateName } ` ) ;
1856
+ let template = owner . lookup < TemplateFactory > ( `template:${ templateName } ` ) ;
1854
1857
assert (
1855
1858
`Could not find "${ templateName } " template, view, or component.` ,
1856
- isDefaultRender || Boolean ( template )
1859
+ isDefaultRender || template !== undefined
1857
1860
) ;
1858
1861
1859
1862
let parent : any ;
@@ -1866,7 +1869,7 @@ function buildRenderOptions(
1866
1869
into,
1867
1870
outlet,
1868
1871
name,
1869
- controller : controller ! as any ,
1872
+ controller,
1870
1873
template : template !== undefined ? template ( owner ) : route . _topLevelViewTemplate ( owner ) ,
1871
1874
} ;
1872
1875
@@ -2228,7 +2231,7 @@ Route.reopen(ActionHandler, Evented, {
2228
2231
2229
2232
let controllerName = this . controllerName || this . routeName ;
2230
2233
let owner = getOwner ( this ) ;
2231
- let controller = owner . lookup ( `controller:${ controllerName } ` ) ;
2234
+ let controller = owner . lookup < Controller > ( `controller:${ controllerName } ` ) ;
2232
2235
let queryParameterConfiguraton = get ( this , 'queryParams' ) ;
2233
2236
let hasRouterDefinedQueryParams = Object . keys ( queryParameterConfiguraton ) . length > 0 ;
2234
2237
@@ -2278,7 +2281,7 @@ Route.reopen(ActionHandler, Evented, {
2278
2281
}
2279
2282
2280
2283
let urlKey = desc . as || this . serializeQueryParamKey ( propName ) ;
2281
- let defaultValue = get ( controller , propName ) ;
2284
+ let defaultValue = get ( controller ! , propName ) ;
2282
2285
2283
2286
defaultValue = copyDefaultValue ( defaultValue ) ;
2284
2287
@@ -2287,7 +2290,7 @@ Route.reopen(ActionHandler, Evented, {
2287
2290
let defaultValueSerialized = this . serializeQueryParam ( defaultValue , urlKey , type ) ;
2288
2291
let scopedPropertyName = `${ controllerName } :${ propName } ` ;
2289
2292
let qp = {
2290
- undecoratedDefaultValue : get ( controller , propName ) ,
2293
+ undecoratedDefaultValue : get ( controller ! , propName ) ,
2291
2294
defaultValue,
2292
2295
serializedDefaultValue : defaultValueSerialized ,
2293
2296
serializedValue : defaultValueSerialized ,
0 commit comments