фона:
Я строю простой программы, которая использует simpleWeather.js API, чтобы тянуть в текущей температуры, который будет использоваться остальная часть программы (http://simpleweatherjs.com/).Обновление глобальной переменной: 1. С помощью функции-члена vs. 2. Использование функции обратного вызова AJAX
Обновленный код:
Все ниже код находится в пределах контроллера AngularJS и файл simpleWeather.js связан в файле index.html.
var _this = this;
var seasons = null;
function myAjaxCheck(callBack){
$.simpleWeather({
location: 'Calgary, CA',
woeid: '',
unit: 'c',
success: function(weather) {
var temperatureTemp = parseInt(weather.temp);
callBack(temperatureTemp);
}
});
}
var temperature;
myAjaxCheck(function(returnedTemperature){
temperature = returnedTemperature;
if (temperature > 20){
_this.seasons = summerCollection; <-- summerCollection is an array strings
}
});
Альтернатива, которая работает:
var _this = this;
var seasons = null;
var test = function(){
_this.seasons = summerCollection;
};
test();
UPDATE: Проблема:
кажется, что я могу обновить глобальную переменную тестирования функции члена(), как во 2-й фрагмент кода. Однако почему глобальная переменная не обновляется с помощью функции обратного вызова AJAX в первом фрагменте кода?
У меня есть div в моем HTML, который использует ng-repeat, чтобы выплюнуть все строки в массиве summerCollection. Он работает со вторым фрагментом кода, но не с первым.
Любая помощь очень ценится!
Любые идеи?
Оригинал Проблема:
Из того, что я собрал из веб-инспектора, оказывается, что порядок, в котором этот код нагрузок (который не должен):
а. $ .simpleWeather ({...
б оповещения (температура)
с успехом:..? Функция (погода) {...
Любые идеи, почему это я знаю, что если я ставлю (погода) {}, тогда он вернет текущую температуру, но это не то, что я хочу.
В конечном итоге я хочу, чтобы переменная температура удерживала текущую температуру, чтобы я мог использовать эта переменная в других функциях. Например, я хочу иметь возможность устанавливать «сезоны» в разные строки в соответствии с значением температуры.
Любая помощь очень ценится!
Спасибо за ваши советы. Я попытался реализовать это, однако я столкнулся с новой проблемой. Я обновил вопрос, не могли бы вы взглянуть и сообщить мне, что вы думаете? Спасибо – justinSYDE
, если вы положили console.log (returnTemperature) в качестве первой строки обратного вызова (перед установкой глобального), показывает ли она правильную температуру? – manishie
Да, это показывает правильную температуру – justinSYDE