Как связать ObservableCollection XyDataSeries с помощью вложенного свойства

Поскольку этот ответ был написан, Firebase добавила функцию, которая позволяет упорядочивать любой дочерний элемент или значение. Таким образом, теперь есть четыре способа заказа данных: по ключу, по значению, по приоритету или по значению любого именованного дочернего элемента. [Gg]

Основные подходы остаются неизменными, хотя:

] 1. Добавьте дочернее свойство с инвертированной меткой времени, а затем закажите это.

2. Прочитайте их в порядке возрастания, а затем инвертируйте их на клиенте.

Firebase поддерживает извлечение дочерних узлов коллекции двумя способами:

  • по имени
  • по приоритету

То, что вы получаете сейчас, называется по имени, что бывает хронологическим. Это не совпадение кстати: когда вы push элемент в коллекцию, имя создается, чтобы гарантировать, что дети упорядочены таким образом. Чтобы процитировать документацию Firebase для push :

Уникальное имя, сгенерированное push (), имеет префикс с меткой времени, созданной клиентом, так что результирующий список будет хронологически отсортированы.

В руководстве Firebase по упорядоченным данным есть это сказать по теме:

Как данные упорядочены

По умолчанию дети в узле Firebase сортируются лексикографически по имени. Использование push() может генерировать дочерние имена, которые, естественно, сортируются в хронологическом порядке, но многие приложения требуют, чтобы их данные сортировались другими способами. Firebase позволяет разработчикам указывать порядок элементов в списке, указав собственный приоритет для каждого элемента.

Самый простой способ получить нужное поведение - также указать всегда убывающий приоритет, когда вы добавите элемент:

var ref = new Firebase('https://your.firebaseio.com/sell');
var item = ref.push();
item.setWithPriority(yourObject, 0 - Date.now());

Обновить

Вам также придется искать детей по-другому:

fbl.child('sell').startAt().limit(20).on('child_added', function(fbdata) {
  console.log(fbdata.exportVal());
})

В моем тесте с использованием on('child_added' гарантирует, что последние несколько детей добавлены в обратном хронологическом порядке. С другой стороны, с помощью on('value' возвращает их в порядке их имени.

Обязательно прочитайте раздел «Чтение упорядоченных данных» , в котором объясняется использование child_* события для извлечения (упорядоченных) детей.

Бит для демонстрации этого: http://jsbin.com/nonawe/3/watch?js,console

1
задан Russell 16 January 2019 в 14:39
поделиться