Работя върху приложение за играчки, за да науча жарава. Имам рецепти, които принадлежат към стиловете. Стилът се състои само от атрибут име (както и неявния идентификатор). Имам проблем с настройването на поле за избор в новия шаблон, за да избера кой стил е рецептата.
Ето какво имам в момента за моите маршрути, контролери и шаблони:
Маршрути:
App.RecipesNewRoute = Ember.Route.extend({
model: function() {
return App.Recipe.createRecord({
title: '',
description: '',
instructions: ''
});
},
setupController: function(controller, model) {
controller.set('content', model);
}
});
Контролери:
App.RecipesController = Ember.ArrayController.extend({});
App.RecipesNewController = Ember.ObjectController.extend({
create: function() {
this.transitionToRoute('recipes.show', this.content);
},
cancel: function() {
this.content.deleteRecord();
this.transitionToRoute('recipes.index');
},
buttonTitle: 'Add Beer Recipe'
});
Шаблони:
рецепти/нови и формуляр частични:
<script type="text/x-handlebars" data-template-name="recipes/new">
{{ partial 'recipes/form' }}
</script>
<script type="text/x-handlebars" data-template-name="recipes/_form">
{{ title }}
<form>
<fieldset>
<div>
<label {{bindAttr for="titleField.elementId"}}>Title</label>
{{view Ember.TextField valueBinding='title' name='title' viewName='titleField'}}
</div>
<div>
<label>Style</label>
{{view Ember.Select valueBinding='style' name='style' viewName='styleField' contentBinding='App.Style.find()'}}
</div>
<div>
<label {{bindAttr for='descriptionField.elementId'}}>Description</label>
{{view Ember.TextArea valueBinding='description' name='description' viewName='descriptionField'}}
</div>
<div>
<label {{bindAttr for='instructionsField.elementId'}}>Instructions</label>
{{view Ember.TextArea valueBinding='instructions' name='instructions' viewName='instructionsField'}}
</div>
<a href='/bg#' {{action create target='controller'}}>{{buttonTitle}}</a>
</fieldset>
</form>
<a href='/bg#' {{action cancel target='controller'}}>Cancel</a>
</script>
Основният извод е: {{view Ember.Select valueBinding='style' name='style' viewName='styleField' contentBinding='App.Style.find()'}}
Също така се опитах да настроя стилова променлива в контролера: В RecipesNewController: styles: App.Style.find()
и в изгледа {{view Ember.Select valueBinding='style' name='style' viewName='styleField' contentBinding='styles' optionValuePath='styles.id' optionLabelPath='styles.name'}}
както и в setupController на маршрута: controller.set('styles', App.Style.find())
(със същия код за преглед, както при настройката му в контролера).
Всяка помощ би била чудесна, сигурен съм, че е нещо просто.
Благодаря
Актуализация
Така че мисля, че почти го разбрах.
В моя SetupController на RecipesNewRoute имам controller.set('styles', App.Style.find());
. Тогава според мен имам {{view Ember.Select valueBinding='style' name='style' viewName='styleField' contentBinding='controller.styles' contentValuePath='content.id' contentLabelPath='content.name'}}
. Сега проблемът ми е, че полето за избор се попълва, освен че етикетът и стойността са зададени на <App.Style:ember407:100>
вместо на идентификатора и името.