2016-04-20 3 views
0

Так что я это вычисленное свойства внутри мой component.js: contexts: Ember.computed.oneWay('myService.contexts'),ember.js: Использование вычисленной собственности в рукоятках от службы

И я могу получить содержание от другого действия

openHelp(){ 
     console.log(this.get('contexts')) 
     alert(this.get('contexts')) 
    } 
    } 

Но когда я пытаюсь использовать вычисляемое свойство в Handlebars ({{contexts}}), оно просто пустое.

Я создал Ember поворачивающий на этот вопрос: https://ember-twiddle.com/38de64d58dcf3298df6d4176f15cbc0e?openFiles=components.my-component-help.js%2Ctemplates.components.my-component-help.hbs

Если у меня есть массив foo: [ 'foo','bar'] и я {{Foo}} выводит на руле. Но если я сделаю foo вычисленное свойство, которое получает [ 'foo','bar'] и делает {{foo}} Я ничего не получаю.

ответ

2

Вот решение: https://ember-twiddle.com/e9c2ef05e27013a389e0b2bfdaec3d40?openFiles=services.my-service.js%2Ctemplates.components.my-component-help.hbs

Были два вопроса:

  1. contexts является массивом. Когда вы console.log или alert это, те методы внутри внутри некоторых браузеров JSON.stringify объект для вас для вашего удобства. Эмбер этого не сделает. Вам нужно отформатировать массив самостоятельно или, как я, each над ним. Для целей отладки не стесняйтесь использовать вспомогательный помощник log.

  2. Вычислительные свойства массивов наблюдаются за мутациями массива с помощью методов Ember, таких как pushObject и removeObject. Простое использование push или splice не обновит вычисленное свойство.

1

Не можете прокомментировать ответ выше, который является правильным, потому что у меня не хватает репутации, но я хотел бы добавить ссылку к документации, относящейся к наблюдаемым методам Ember для перечислимых:

https://guides.emberjs.com/v2.5.0/object-model/enumerables/

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

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