2015-09-04 2 views
3

Я использую изоляционную область в директиве. Кажется, все работает нормально. Я установил область = на два свойства и привязал к ним в моем шаблоне. Затем в моем контроллере я вызываю свое обслуживание, получаю данные и нажимаю их на связанные объекты.Изолировать область угловой привязки не обновляется с геолокации

Что действительно меня отталкивает, так это то, что я могу как регистрировать, так и устанавливать точку останова и видеть данные, но угловой не обновляет привязку (хотя он очень хорошо обновляет мое поле bool).

Я предоставил plunkr: http://plnkr.co/edit/8sVwaea5Amqvf3yiI1Nm?p=preview

И часть кода Релевент является:

if (navigator.geolocation) { 
    //navigator.geolocation.getCurrentPosition(success, fail); 
    $timeout(function() { success({testdata: "bogusdata"}) }, 1500); 
    } else { 
    fail({ error: "navigator.geolocation not available"}); 
    } 

Очевидно, что если я использую мой $ таймаута издеваться, он работает просто отлично. Но если я подстановлю функцию getCurrentPosition, ничего не обновляется (но это LOG)?!?!

Помощь?

+0

Отличный код. Я пытаюсь найти любую проблему или ошибку, чтобы помочь вам. –

ответ

1

На самом деле у вас есть только проблема с тем, как вы пытаетесь справиться с данными - объект геолокации приходит и получает положенный на $scope правильно, это только то, что JSON.stringify упорядочивает его (по-видимому, ошибочно) в {}.

Вы можете проверить это, войдя $scope.locationData.payload - вы увидите весь объект появится на консоли, а также ведение журнала typeof $scope.locationData.payload.coords показывает object, что означает, что он правильно заполняется в момент журнала вызова. (Logging сам объект не будет доказательством этого, потому что console.log только регистрации ссылок на объект, асинхронно доступ к ним, когда вы расширяете их вручную)

Это только на первый взгляд неверен, потому что JSON.stringify только должен войти собственные свойства объекта и coords и timestamp не являются собственными свойствами этого объекта геолокации. (попробуйте $scope.locationData.payload.hasOwnProperty('coords'): он возвращает false)

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

Дополнительные ресурсы:

  • Вот блог статьи я нашел, который наткнулся на одной и той же проблемой: Beware of JSON.stringify

  • Вот StackOverflow сообщение объясняя, почему эти свойства не являются собственные свойства геолокации: JSON stringify/Geolocation object

+0

Спасибо за ответ, мне потребуется немного, чтобы переварить его. – cocogorilla

+1

Попробуйте получить отдельные свойства из объекта данных местоположения: $ scope.locationData = {message: error.message ...} –

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