变量不在JS /异步问题中的函数外部更新?

时间:2017-07-01 11:11:23

标签: javascript angularjs asynchronous

我目前正面临着我的计划问题。我的问题基本上是我在controller.js中的变量preinstall没有在clickCounter函数之外更新。

所以clickCounter正在计算我点击按钮的点击次数,从那里我希望点击次数代表我将在名为类别的数组中解析的不同城市名称,如categories.js所示。获得城市名称后,我会在API调用中使用该城市。这就是为什么我目前有一个if / else语句用于串起API URL。其中一个条件是针对另一个函数,而这个特定的函数则集中在“else”部分。

我已经知道了clickCounter工作正常,但它没有在函数外部进行更新。

我google了很多,这似乎是一个异步问题?如果我错了,请纠正我,但即使使用谷歌搜索并查看类似的问题,我也不知道我应该做什么。

我应该使用承诺吗?或.then()?任何输入/示例肯定会有所帮助。谢谢!

controller.js

cityCounting

的index.html

angular.module('weatherApp.controllers', [])

.controller('weatherCtrl', function($scope, $http) {
  var vm = $scope;

  $http.get("http://ip-api.com/json").success(function(data) {

    var categories = [
          {"id": 1, "city": "Boston"},
          {"id": 2, "city": "New York"},
          {"id": 3, "city": "Seattle"},
          {"id": 4, "city": "Los Angeles"},
          {"id": 5, "city": "Miami"},
          {"id": 6, "city": "Fresno"},
          {"id": 7, "city": "Tracy"},
          {"id": 8, "city": "Portland"},
          {"id": 9, "city": "Norfolk"},
          {"id": 10, "city": "San Francisco"},
      ];


    var city = data.city;
      var cityCounting = 0;

    var counter = 0;

  $scope.clickCounter =function () {
      cityCounting = counter++;
      console.log(cityCounting);
      return cityCounting;
    }
    console.log(cityCounting);

    if(cityCounting == 0){
      var apiKey = "";//removed
    var openWeatherURL = "http://api.openweathermap.org/data/2.5/weather?q=" + city + ",us" + "&appid=" + apiKey;
    console.log("no im from city original here");
    }
    else{
      var apiKey = "";
    var openWeatherURL = "http://api.openweathermap.org/data/2.5/weather?q=" + cityCounting + ",us" + "&appid=" + apiKey;
        console.log("no im from city counting");
    }
  });
});

以下是我所谈论的部分的代码https://jsfiddle.net/zvdr4wy2/

0 个答案:

没有答案