Предположим, у меня есть приложение с двумя маршрутами: «/ services» и «/ services /: service».Динамически создаваемые торговые точки
Когда пользователь посещает состояние службы: я бы хотел, чтобы он просмотрел список сведений, относящихся к одной конкретной службе. До сих пор тривиально.
При одинаковых посещениях/сервисах пользователей я хотел бы показать список услуг, плюс информацию об услугах (для каждой услуги). Я также хотел бы сделать это без дублирования шаблонов.
Очевидным ответом, по-видимому, были выходы, однако похоже, что все выходы должны быть статически названы, и у меня есть заранее определенное количество из них. Все они имеют уникальные имена, но, конечно, я не могу перекодировать имена в шаблоне. Я хотел бы динамически определять имена розетки, поэтому я могу соответствующим образом вызвать this.render в renderTemplate, чтобы заполнить их, но я не знаю, как это сделать.
Что вы предложите?
UPDATE: Кажется, что я могу обрабатывать свой конкретный случай с помощью {{template}}, но это не связывает другой маршрут как таковой. Я все еще хотел бы знать, как это сделать; Позднее я буду делать более сложные вещи, где это определенно будет лучше, и в соответствующих контроллерах все еще происходит дублирование кода.
UPDATE: В конце концов я сделал свой собственный помощник «dynOutlet», как таковой:
// Define "dynamic outlets". These are just like normal outlets,
// except they dereference the outlet name.
Handlebars.registerHelper('dynOutlet', function(property, options) {
Ember.assert("Syntax: {{dynOutlet <property>}}", arguments.length === 2);
var context = (options.contexts && options.contexts[0]) || this,
normalized = Ember.Handlebars.normalizePath(
context, property, options.data),
pathRoot = normalized.root,
path = normalized.path,
value = (path === 'this') ? pathRoot : Ember.Handlebars.get(
pathRoot, path, options);
return Ember.Handlebars.helpers.outlet(value, options);
});
Я еще, чтобы выяснить, будет ли это работать так, как я хочу, хотя.
Можете ли вы сбить немного jsFiddle, пожалуйста? – Wildhoney
У меня проблемы с работой jsfiddle. Возможно, http://jsfiddle.net/qU44U/ предоставит вам идею, несмотря на то, что она не работает. – Baughn