2013-11-26 3 views
0

У меня есть довольно сложная настройка с Ember, используя вложенный View/template внутри большего View. В моем родительском представлении есть контроллер с массивом на нем, который я бы хотел использовать в качестве contentBinding моего Select внутри внутреннего View/template.Ember Выбор привязки заданного содержимого

Я получил помощник руля для работы внутри моего внутреннего шаблона, но я также хотел расширить программный вариант Select, чтобы добавить поддержку стилизации валидации. Однако, когда я расширяю Ember.Select и устанавливаю contentBinding, это не требуется.

Пример в моем шаблоне:

{{view Ember.Select 
     prompt="Choose" 
     classNames="span12" 
     contentBinding="view.parentView.controller.countrylist" 
     optionLabelPath="content.name" 
     optionValuePath="content.id" 
     selectionBinding="view.parentView.controller.selectedObject" 
     valueBinding="view.parentView.controller.model.state"}} 

И как вид, что я показываю с {{вида view.selectBox}}, я поставил переключатель в SelectBoxView.

SelectBoxView = Ember.Select.extend({ 
    prompt: "Please Choose", 
    contentBinding: 'parentView.controller.countrylist', 
    selectionBinding: 'parentView.controller.selectedObject', 
    optionLabelPath: 'content.name', 
    optionValuePath: 'content.id', 
    classNames: ["span12"] 

Оба варианта отображаются, но только чистые рули имеют данные для отображения. Я пробовал каждую комбинацию, о которой я могу думать, чтобы попасть в список стран в моем внешнем контроллере View.

Edit: http://emberjs.jsbin.com/oxAluJI/2/edit?html,js,output

Хорошо, что я испортил с этим всем этим утром. Проблема, с которой я сталкиваюсь, - это получение стран от «родительского» контроллера. У меня нет ни одного взгляда, в котором я нахожусь, и думал, что смогу обойти его.

ответ

0

Вы не хотите делать жесткие коды в таких переплетах, это плохая практика. Тем более, что они выходят за рамки своих возможностей в поисках ценностей. Передайте массив списка стран вниз в представление и прикрепите его при создании экземпляра селектора.

http://emberjs.jsbin.com/alAQEgux/3/edit

App.AppleView = Em.View.extend({ 
    templateName: 'apple' 
}); 

App.SelectBoxView = Ember.Select.extend({ 
    prompt: "Please Choose", 
    optionLabelPath: 'content', 
    optionValuePath: 'content', 
    classNames: ["span12"] 
}); 

<script type="text/x-handlebars" data-template-name="index"> 
    {{view App.AppleView countryList=model}} 
</script> 

<script type="text/x-handlebars" data-template-name="apple"> 
    Apples 
    {{view App.SelectBoxView contentBinding=view.countryList}} 
</script> 
+0

Это имеет смысл, но я не модель на «уровне» в AppleView. Иными словами, не существует определенного контроллера. У меня есть маршрут, контроллер и вид для верхнего уровня. Маршрут поставляет модель, которую я заполняю, и у контроллера есть список стран, который я хочу использовать. Внутренний вид имеет шаблон, в котором я передаю свой выбор с помощью помощника {{view}}. В этом примере мне все равно придется использовать countryList = parentView.model или что-то в этом роде для доступа к нему, или я думаю об этом неправильно? – zacharykane

+0

Не могли бы вы обновить мой пример и показать мне пример? – Kingpin2k

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