如何在angularjs中更新嵌套函数内的全局变量?

时间:2016-07-26 21:14:33

标签: javascript arrays angularjs json

这是我正在使用的代码。 currentId是10;我正在进行一个具有$ http.get(对JSON)功能的服务调用,并且我希望在执行该函数后以JSON的长度攻击数组到currentId。我该怎么做?在angularjs中是否有任何特殊功能可以帮助我。我在这里已经阅读了其他相关问题,但我需要在angularjs中完成。感谢。

var currentId = 10;
    console.log(currentId + ' before function'); //outputs 10


    function findId(){
        readJson.readJsonfun().then(function(data) {
            currentId = data.length; //say data.length = 20;
            return currentId;
    });}

    findId();

    console.log(currentId + ' before function');  //should output 20?

2 个答案:

答案 0 :(得分:0)

因为它的异步功能 - 使用异步方法

var currentId = 10;
var modifiedId1;
var modifiedId2;

console.log(currentId + ' before function call');


function findId(){
    return readJson.readJsonfun().then(function(data) {
        currentId = data.length;
        return $q.when(currentId);
    });
}

findId().then(function(id){
    //first time we need it
    firstFunction(currentId); //or firstFunction(id);
});

function firstFunction(id){
   modifiedId1 = id * 2;
}

function secondFunction(){
   return findId().then(function(id){
       //second time we need it, currentId is updates
       modifiedId2 = id * 4;
       return $q.when();
   });
}

答案 1 :(得分:0)

将关注变量(currentID)存储在服务中。在您的服务中,它看起来像这样:

.service('Example', function(){

  var service = this;
  var currentID = null;

  service.getCurrentID = function() {
    return currentID;
  }

  service.findId(){
      readJson.readJsonfun().then(function(data) {
          currentId = data.length; //say data.length = 20;
  });}

然后,从服务外部,您可以调用Example.findID()来更新currentID,然后Example.getCurrentID()来检索实际值