2013-02-12 1 views
1

У меня есть такая ситуация, когда у меня есть имя шаблона, хранящееся в переменной. Я заметил, что если у вас есть, напримерEmberJs: визуализировать шаблон внутри Handlebars-helper

var config = { view: "PeopleView", .... } ; 

, что вы не можете сделать

{{view App[config.view]}} 

Если это возможно, я по-прежнему заинтересован в решении! Во всяком случае, я решил исправить это с помощником Рули:

{{setVariableView config}} 

... 

Ember.Handlebars.registerBoundHelper('setVariableView', function(value, options) { 
    return App[value.view].create(value) ; // <-- this doesn't work :) 
}) ; 

На данный момент я не знаю, как назвать скомпилированный PeopleView? Любые предложения?

Приветствия

ответ

1

Сначала вы хотите создать объект конфигурации, как вы сделали:

App.config = Ember.Object.create({ view: 'App.MyView' }); 

И затем вы хотите зарегистрировать ваш помощник, который вы сделали, но это должен быть изменен немного, так как представления должны быть вручную append-е изд, когда вы берете этот подход:

Ember.Handlebars.registerBoundHelper('setVariableView', function(value, options) { 
    var view = eval(value.view).create(); 
    view.append(); 
}); 

И теперь вы можете передать в файле конфигурации у наш setVariableView помощник, и он будет оказывать вид, который был принят в вашей конфигурации:

{{setVariableView App.config}} 

Единственная забота является использование eval. Может быть, рано утром это не помогает, но сейчас я не могу представить лучшую альтернативу.

+0

Вы можете определить конфигурационный объект как 'App.config = Ember.Object.create ({app: App, view: 'MyView'});' и в помощнике: var view = value.app [value.view ] .create(); '. Таким образом, вам не нужно использовать 'eval' :) –

+0

value.app [value.view] .create() создает объект/класс. Как создать строку и передать ей контекст (например: значение)? –

 Смежные вопросы

  • Нет связанных вопросов^_^