2016-08-09 4 views
1

Я не могу понять, как сделать следующее, просматривая docs для «выбора мощности ember».Ember Power Select - Label/Value

У меня есть пользователь модели:

export default Model.extend({ 
    "state": attr('string') 
}); 

Хранится в качестве значения в БД: NY для государства

У меня также есть следующие данные для загрузки в уголек мощности выбора опций:

stateList: [ 
    { 
     label: 'New Jersey', 
     value: 'NJ' 
    }, 
    { 
     label: 'New York', 
     value: 'NY' 
    }, 
] 

Следующий код руля будет загружаться в состояниях и отображать их. Вы можете найти и выбрать состояние:

{{#power-select 
    options=stateList 
    searchField="label" 
    selected=state 
    onchange=(action (mut state)) 
    as |state| 
}} 
    {{state.label}} 
{{/power-select}} 

вопрос ... на выбор из «New York», я хотел бы сохраненное значение «состояния» быть «NY»

Прямо сейчас он просто хранит весь объект. Я понимаю через 'onchange' Я могу установить значение, но я действительно не понимаю, как вы установили значение 'NY' и выбрали ли он?

Я пытался делать

this.set('state',selection.value) 

Но я думаю, что он ищет индекс объекта, я тем не менее, просто хочу, чтобы передать «Нью-Йорк», а не весь объект ... это возможно?

ответ

1

Ответ на ваш вопрос НЕТ (AFAIK). Но вы можете достичь этого с помощью вычислимого свойства.

Компонент Код расслоение плотной

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    stateList: [{'label': 'New Jersey','value': 'NJ'},{ 'label': 'New York','value': 'NY'}], 
    state:'NY', 
    selectedState: Ember.computed('state', function(){  
    return this.get('stateList').findBy('value',this.get('state')); 
    }), 

    actions:{ 
    setSelectedState(selectedVal){  
     this.set('state',selectedVal.value); 
    } 
    } 
}); 

Компонент HBS код

{{#power-select 
    options=stateList 
    searchField="label" 
    selected=selectedState 
    onchange=(action 'setSelectedState') 
    as |state| 
}} 
    {{state.label}} 
{{/power-select}} 
{{yield}} 

Здесь Ember-Twiddle

+0

Twiddle позволяет только выбрать запись один раз, изменение значения не представляется возможным. У вас есть идея, как это можно исправить? – Harald

+1

Вот обновленная [twiddle link] (https://ember-twiddle.com/8894d46f8bca43dfdf42025a1c847aa4?openFiles=templates.application.hbs%2Ctemplates.components.selected-test.hbs). нам нужно включить '

' dummy div в application.hbs для админки черной дыры ember для размещения раскрывающегося контекста. – kumkanillam

+0

Спасибо за помощь! Теперь он работает нормально. – Harald

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