-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
generate_controller.js
76 lines (59 loc) · 1.97 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import Ember from "ember-metal/core"; // Logger
import { get } from "ember-metal/property_get";
import { isArray } from "ember-metal/utils";
/**
@module ember
@submodule ember-routing
*/
/**
Generates a controller factory
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.
You can customize your generated controllers by defining
`App.ObjectController` or `App.ArrayController`.
@for Ember
@method generateControllerFactory
@private
*/
export function generateControllerFactory(container, controllerName, context) {
var Factory, fullName, factoryName, controllerType;
if (context && isArray(context)) {
controllerType = 'array';
} else if (context) {
controllerType = 'object';
} else {
controllerType = 'basic';
}
factoryName = 'controller:' + controllerType;
Factory = container.lookupFactory(factoryName).extend({
isGenerated: true,
toString: function() {
return "(generated " + controllerName + " controller)";
}
});
fullName = 'controller:' + controllerName;
container._registry.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(container, controllerName, context) {
generateControllerFactory(container, controllerName, context);
var fullName = 'controller:' + controllerName;
var instance = container.lookup(fullName);
if (get(instance, 'namespace.LOG_ACTIVE_GENERATION')) {
Ember.Logger.info("generated -> " + fullName, { fullName: fullName });
}
return instance;
}