繁体   English   中英

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

[英]How to update a global variable inside a nested function in angularjs?

这是我正在使用的代码。 currentId是10; 我正在进行一个具有$ http.get(to 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?

由于它是异步功能-使用异步方法

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();
   });
}

将关注变量(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()来检索实际值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM