Ember Comport Property Sort Troubles - PullRequest
0 голосов
/ 17 мая 2018

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

import Component from '@ember/component';
import { inject as service } from '@ember/service';
import EmberObject, { computed, observer } from '@ember/object';

export default Component.extend({
  googleMapsApi: service(),
  geolocation: service(),
  sortDefinition: ['distanceTo'],
  sortedVineyards: Ember.computed.sort('model', 'sortDefinition'),
  didInsertElement() {
    this.send('distanceFrom');
  },
  actions: {
    distanceFrom(){
      let distanceFromLoading = this.get('distanceFromLoading');
      let userLocation = this.get('userLocation');
      var userLocationLat = userLocation[0];
      var userLocationLon = userLocation[1];
      let userLocationFormat = '' + userLocationLat + ',' + userLocationLon;
      // console.log(userLocationFormat);
      var self = this;
      let model = this.get('model');
      // console.log(model);
      model.forEach(function(item) {
        let endLocation = '' + item.get('location');
        self._super(...arguments);
        self.get('googleMapsApi.google').then((google) => {
          var self = this;
          let distanceMatrixService = new google.maps.DistanceMatrixService();
          function calculateDistance() {
            distanceMatrixService.getDistanceMatrix({
              origins: [userLocationFormat],
              destinations: [endLocation],
              travelMode: google.maps.TravelMode.DRIVING,
              unitSystem: google.maps.UnitSystem.IMPERIAL,
              avoidHighways: false,
              avoidTolls: false
            }, callback);
          }
          function callback(response, status) {
            if (status != google.maps.DistanceMatrixStatus.OK) {
            } else {
              if (response.rows[0].elements[0].status === "ZERO_RESULTS") {
              } else {
                var distance = response.rows[0].elements[0].distance;
                var distance_text = distance.text;
                item.set('distanceTo', distance_text);
              }
            }
          }
          calculateDistance();
        });
      });
    }
  }
});

1 Ответ

0 голосов
/ 17 мая 2018

Оказывается, в моем примере distance_text (определение сортировки) была строкой.Учитывая мой небольшой набор данных, это выглядело, как будто это была половина сортировки, когда, скорее всего, это не сортировка вообще.Превратил это число в правильное целое число, и все работало хорошо.

...