2016-10-24 7 views
1

Мне нужно несколько полей ввода для заполнения массива int.Изменение массива на шаблоне не обновляется на маршруте/контроллере

Это мой шаблон и маршрут:

// Route 
import Ember from 'ember'; 

export default Ember.Route.extend({ 
    setupController() { 
    this.controller.set('myArray', [1]); 
    // ... 
    } 
} 

// Template 
<!-- ... --> 
{{#each myArray as |element|}} 
    {{input type="number" value=element}} 
{{/each}} 

<p>Length: {{myArray.length}}</p> 
<p>First item: {{myArray.[0]}}</p> 

Когда шаблон первой визуализации, поле ввода имеет значение 1 и First item также показывает 1, но при изменении входного значения к чему-то еще, First item еще показывает 1.

Мне удалось заставить это работать, если я заменил массив ints массивом объектов, например. this.controller.set('myArray', [{value: 1}], а затем использовать свойство value на шаблоне, но я бы предпочел избежать этого, если смогу. Можно ли сделать это с помощью массива ints?

+0

'setupController' принимает' controller' как первый аргумент. Используйте это. – locks

ответ

2

Можно ли это сделать с помощью массива ints?

Kinda. Он работает с объектами, потому что вы мутируете свойство в объекте. С номерами они неизменяемы, так что это не совсем jive. Вместо этого нужно заменить элемент в массиве.

Предлагаю перейти к массиву объектов, подобных вам.

+1

Спасибо! Я подозревал, что это проблема. Я собираюсь придерживаться массива объекта. Это не идеально, но легче справиться. – Raph

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