ich wahrscheinlich meine Begriffe ziemlich schlecht bin munging, also, wenn Sie die richtige Art und Weise kennen zu dem Wert zu beziehen ‚a‘ in einer Funktion wie:Callback-Funktion nicht auf lokale Variable Wert hält
var a = 10;
function addA(b){
return b + a;
}
Lassen Sie mich wissen, .
Wie auch immer, kurz gesagt, ich möchte eine Variable in $ Scope, nach einem Callback zurück, mit einem Wert ändern. Das ist, was ich tue:
function fetchFromAPIs(_scope){
if (navigator.geolocation){
var foo = function(position){
var scope = _scope;
getPosition(position, scope);
}
navigator.geolocation.getCurrentPosition(foo);
}
else{
$(body).prepend("<span>Geolocation is not supported by this browser.</span>");
}
}
function getPosition(position, scope){
scope.weather = 'foo';
scope.latitude = position.coords.latitude;
scope.longitude = position.coords.longitude;
getCityCountry(scope);
getWeather(scope);
}
angular.module('app', [])
.controller('weatherController', function($scope){
function init(){
fetchFromAPIs($scope);
}
init();
});
Doch $ scope.weather wird nicht aktualisiert. Aber wenn ich eine Position in getPosition abnehme und foo ('') innerhalb von fetchFromAPIs ($ scope) aufruft, wird der $ scope.weather-Wert gut aktualisiert.
Was auf der Erde geschieht? Und gibt es eine bessere Angular-zugelassene Weise, dies zu tun? Das Denken des Aufgebens und nur jQuery mit meinem abgerufenen Werte auf der Seite zu setzen ...
Sie ersetzen die Verbindung von '$ scope' innerhalb Ihrer' fetchFromAPIs'. Hör auf damit und geben sie als Referenz, dann wird alles in Ordnung sein –
Ich glaube, du bist Problem ist 'var foo = function (Position) {var scope = _SCOPE; // Nur lokal für die Funktion, Sie möchten die globale Variable ändern. remove var getPosition (position, scope); } Entfernen Sie var von diesem Funktionsaufruf, so dass es auf die globale Version verweist. –
Wo/wie testen Sie, dass '$ scope.weather' gesetzt ist? –