Как обновить глобальную переменную внутри вложенной функции в angularjs?

0

Это код, который я использую. 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?
Теги:
arrays

2 ответа

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() для обновления текущего идентификатора, а затем Example.getCurrentID() для получения фактического значения

0

Поскольку это функция Async - используйте асинхронный подход

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();
   });
}
  • 0
    Спасибо! Дело в том, что я не могу использовать currentId позже, мне нужно использовать его позже, и после функции .then он возвращается к тому же значению. Как я могу изменить это навсегда?
  • 0
    ты проверил мое решение? если вам нужно что-то сделать после выполнения функции finId - добавьте это жестко вместо console.log
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню