Как получить доступ к свойству компонента в Ember.computed.sort

#javascript #ember.js #ember-cli

#javascript #ember.js #ember-cli

Вопрос:

В Ember 1.13 у меня есть компонент, который использует Ember.computed.sort:

 export default Ember.Component.extend({
    sortedItems: Ember.computed.sort("allItems", function(a, b) {
        //How to access columnList from here?
    }
    columnList: ["name","shortcode"]
})
  

Мне нужно получить доступ к свойству columnList компонента, чтобы настроить поведение функции сравнения, предоставляемой Ember.computed.sort. Как получить доступ к списку столбцов внутри функции сравнения в месте, указанном в приведенном выше коде?

Комментарии:

1. columnList свойство находится внутри вашего component или controller ?

2. @rinoldsimonI действительно считает, что это ниже component , как указано выше export default Ember.Component.extend({ columnList: ["name","shortcode"] })

3. @Mikelemuel работает ли приведенное ниже решение?

4. @rinoldsimon я могу подтвердить, список столбцов — это свойство внутри компонента

5. @Mikelemuel Я обновил ответ примером twiddle. Пожалуйста, проверьте ответ, если он покажется вам полезным. Спасибо

Ответ №1:

Если cloumnList свойство находится в том же, component где вы используете Ember.computed.sort , просто используйте this.get('columnList'); для доступа к columnList свойству

 ...
sortedItems: Ember.computed.sort("allItems", function(a, b) {
  this.get('columnList');
}),
...
  

пример ember-twiddle.

Комментарии:

1. это не работает, это что-то другое, чем компонент

2. это не компонент внутри функции сортировки. Вот пример этого: pasteboard.co/I67ALEC.jpg

3. Это проблема с вашей устаревшей версией ember? В последней версии это работает так, как описано в ответе: ember-twiddle.com/692f836557dbca2fb50d99e36aa6fb6f