-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
generate_controller.js
58 lines (44 loc) · 1.31 KB
/
generate_controller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { info } from 'ember-metal/debug';
import { get } from 'ember-metal/property_get';
/**
@module ember
@submodule ember-routing
*/
/**
Generates a controller factory
@for Ember
@method generateControllerFactory
@private
*/
export function generateControllerFactory(owner, controllerName, context) {
var Factory, fullName;
Factory = owner._lookupFactory('controller:basic').extend({
isGenerated: true,
toString() {
return `(generated ${controllerName} controller)`;
}
});
fullName = `controller:${controllerName}`;
owner.register(fullName, Factory);
return Factory;
}
/**
Generates and instantiates a controller.
The type of the generated controller factory is derived
from the context. If the context is an array an array controller
is generated, if an object, an object controller otherwise, a basic
controller is generated.
@for Ember
@method generateController
@private
@since 1.3.0
*/
export default function generateController(owner, controllerName, context) {
generateControllerFactory(owner, controllerName, context);
var fullName = `controller:${controllerName}`;
var instance = owner.lookup(fullName);
if (get(instance, 'namespace.LOG_ACTIVE_GENERATION')) {
info(`generated -> ${fullName}`, { fullName: fullName });
}
return instance;
}