Несколько вещей выделяются ...
В вашем вычисляемом свойстве googleLocation
отсутствуют его зависимости, что не позволит обновить его. По крайней мере, location
должны быть перечислены.
Кроме того, вычисляемые свойства должны быть «чистыми функциями», поэтому они не имеют побочных эффектов при каждом выполнении. Таким образом, вместо установки milesAway
в вычисляемой функции вы должны вернуть значение из вашей вычисляемой функции, которое также может быть названо milesAway
. Я не могу комментировать слишком много в части вычисления расстояния, так как сам еще не сделал этого.
Вы должны удалить эту строку из своего кода:
milesAway: attr('string', {async: false}),
и сделайте что-то вроде следующей структуры:
milesAway: computed('location', function() {
let location = this.get('location');
// Your code to calculate the distance
return distance;
})
Однако модели в основном предназначены для постоянных данных, а не для данных переходных процессов. Число миль в зависимости от пользователя будет различаться (я вижу, что у вас есть жестко заданное местоположение пользователя, пока вы работаете над этим) для каждого виноградника, который использует эту модель. Итак, вы, вероятно, хотите переместить это вычисленное свойство из вашей модели в ваш компонент или контроллер. Итак, в вашем компоненте или контроллере вы должны иметь:
milesAway: computed('model.location', function() {
let location = this.get('model.location');
// Your code to calculate the distance
return distance;
})