Я хочу сделать некоторые динамические контроллеры на основе ключей верхнего уровня объекта JSON, где ключи второго уровня становятся переменными для представления. Это возможно?Динамические контроллеры в Ember.js
E.g.
App.dat = { "First": {Var1: "x", Var2: "y"}, "Second": {Var3: "z"}}
я тогда хочу иметь FirstController, SecondController и т.д. создается автоматически и затем иметь возможность доступа {{Var1}}, {{}} Переменная2 и {{}} Var3 на мой взгляд.
Трассы прекрасно работают:
App.Router.map(function() {
this.route('data');
for(var key in App.dat) {
this.route(key);
}
});
Но я не могу заставить контроллеры работать. Ближайший я пришел с некоторым Hacky кода Eval:
for(var key in App.dat) {
console.log("App." + key + "Controller = Ember.Controller.extend();");
eval("App." + key + "Controller = Ember.Controller.extend();");
Ember.$.each(eval("App.dat."+key), function(kkey,v) {
console.log("App." + key + "Controller." + kkey + " = '" + v + "';");
eval("App." + key + "Controller." + kkey + " = '" + v + "';");
});
}
Это приводит к следующим оценкам:
App.FirstController = Ember.Controller.extend();
App.FirstController.Var1 = "x";
App.FirstController.Var2 = "y";
App.SecondController = Ember.Controller.extend();
App.FirstController.Var2 = "z";
Но я явно что-то отсутствует, потому что не может получить доступ {{х}} , {{y}} или {{z}} из представления. Я знаю правильный способ создания экземпляра переменных для взгляда с объектом конструктора, как:
App.FirstController = Ember.Controller.extend({Var1: "x", Var2: "y"});
Но это не практично, и я не могу понять, где объект конструктора получает хранится.
Заранее спасибо.
Почему вы простирающийся маршрут для контроллера? – Vaibhav
Потому что я идиот, и это было почти 6 утра, и я ошибся. Проблема остается, хотя: как вы можете расширять переменные для представления без использования объекта создания экземпляра контроллера? –
что вы пытаетесь сделать здесь? обычно данные json переводятся в модели, а не контроллеры. –