-
Notifications
You must be signed in to change notification settings - Fork 0
/
step2.js
59 lines (51 loc) · 1.78 KB
/
step2.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
function AppViewModel() {
this.makes = {
"Honda": new Make("Japan",
generateModelList("Honda", ["AC", "power windows"])),
"Ford": new Make("USA",
generateModelList("Ford", ["radio"])),
"VW": new Make("Germany",
generateModelList("VW", ["AC", "radio", "airbags"])),
"Toyota": new Make("Japan",
generateModelList("Toyota", ["power windows", "AC"])),
}
this.makeSelection = ko.observable("");
this.modelSelection = ko.observable("");
this.makeSelectionDisplay = ko.computed(() => {
return this.makeSelection() ? this.makeSelection() : "no selection";
});
this.modelSelectionDisplay = // your code here
}
function Make(CountryOfOrigin, models) {
this.CountryOfOrigin = ko.observable(CountryOfOrigin);
this.models = ko.observable(models);
}
function Model(features) {
this.features = ko.observableArray(Array.from(features));
}
const generateModelList = function (make, features) {
switch (make) {
case "Honda":
return {"Civic": new Model(features),
"CRV": new Model(features),
"Accord": new Model(features)};
break;
case "Ford":
return {"Focus": new Model(features),
"Explorer": new Model(features),
"Fiesta": new Model(features)};
break;
case "VW":
return {"Jetta": new Model(features),
"Golf": new Model(features),
"Touareg": new Model(features)};
break;
case "Toyota":
return {"Rav4": new Model(features),
"Camry": new Model( features),
"Land Cruise": new Model(features)};
break;
}
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());