2013-07-16 4 views
2

Я использую angular.js с телефонной связью. Для того, чтобы получить пользователей GPS местоположение Я разработал простую услугу:Методы повторного использования в пределах одной услуги в angular.js

app.factory('geolocation', function ($rootScope, cordovaReady) { 
    return { 
     getCurrentPosition: cordovaReady(function (onSuccess, onError, options) { 

      navigator.geolocation.getCurrentPosition(function() { 
       var that = this, 
        args = arguments; 

       if (onSuccess) { 
        $rootScope.$apply(function() { 
         onSuccess.apply(that, args); 
        }); 
       } 
      }, function() { 
       var that = this, 
        args = arguments; 
       if (onError) { 
        $rootScope.$apply(function() { 
         onError.apply(that, args); 
        }); 
       } 
      }, options); 
     }); 
    } 
}); 

Я называю эту услугу, как этот

geolocation.getCurrentPosition(function (position) { 
    console.log(position); 
}); 

Теперь я хочу расширить с помощью другого метода, называемого getCurrentCity. Этот метод должен использовать getCurrentPosition, чтобы определить город. Таким образом, служба будет выглядеть так:

app.factory('geolocation', function ($rootScope, cordovaReady) { 
    return { 
     getCurrentPosition: .... 
     getCurrentCity: ... 
    } 
}); 

Возможно ли это? Как реализовать getCurrentCity с помощью getCurrentPosition?

ответ

1

Прости меня, если я ответить на неправильный вопрос здесь, но если вы просто спрашивают, как вернуть несколько методов из службы, это довольно просто:

angular.module('app', []).factory('geolocation', function ($rootScope, cordovaReady) { 
    var locationObj = { 
     getCurrentPosition: cordovaReady(function (onSuccess, onError, options) { 

      navigator.geolocation.getCurrentPosition(function() { 
       var that = this, 
        args = arguments; 

       if (onSuccess) { 
        $rootScope.$apply(function() { 
         onSuccess.apply(that, args); 
        }); 
       } 
      }, function() { 
       var that = this, 
        args = arguments; 
       if (onError) { 
        $rootScope.$apply(function() { 
         onError.apply(that, args); 
        }); 
       } 
      }, options); 
     }), 

     getCurrentCity: function() { 
      this.getCurrentPosition(function(position){ 
       //determine city 
       var city = ... 
       //how to apply city to scope? 
      }); 
     } 
    } 

    return locationObj; 
}); 

Если вы спрашиваете PhoneGap -специальный вопрос, пожалуйста, не обращайте внимания!

+0

Нет, это не специфический телефонный разговор. Я попробую ваше предложение. –

+0

hm Я получаю «getCurrentPosition не определено» в методе getCurrentCity –

+0

Попробуйте изменить его на 'this.getCurrentPosition()' – jdp

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