2016-01-06 3 views
1

У меня возникла проблема с именованной функцией в Javascript.Вызов именованной функции из другой именованной функции в javascript

У меня есть эта функция перезагрузки

SN.Reload = function(settings) { 

     var _timer = null; 
     var $grid = null; 

     var init = function() { 

      $grid = $(settings.wrapperSelector); 

      if (_timer > 0 || _timer != null) 
       _timer = settings.timer; 
      else 
       _timer = 600000; 

      window.setInterval(function() { 

       LoadData(); 

      }, _timer); 

     }; 

     var LoadData = function() { 

      $.ajax({ 
       url: '/data.json', 
       type: 'GET', 
       dataType: 'json', 
       cache: false, 
       success: UpdateData, 
       error: DataErrorHandler 
      }); 

     }; 
} 

В нормальном состоянии это будет работать функция LoadData на X минут - это работает, как предполагалось.

теперь у меня есть еще один с именем функции

SN.CreateJsonFromDate = function (settings) { 

.... 

    var SuccessLoad = function() { 

     _dateLoader.hide(); 
     _wrapper.slideUp(); 



    } 
} 

Можно ли использовать LoadData из SN.Reload Внутри функции SuccessLoad в SN.CreateJsonFromDate?

Функция функции LoadData UpdateData при успешном обновлении HTML из json-данных, и я хочу снова вызвать эту функцию в SN.CreateJsonFromDate, так как это создаст новый json-файл.

+0

выглядит как частная функция. –

+0

Hang on ... могу ли я пояснить, что целью SN.Reload является объявление некоторых переменных (некоторые из которых являются функциями), а затем ничего не делать с ними и отказаться от них? – Katana314

+0

@ Katana314 - да, вы можете это прояснить, но это не имеет значения. 'LoadData' доступен только внутри области« SN.Reload »и, поскольку код написан, недоступен вне его. – Adam

ответ

2

Нет, потому что просто LoadData не существует вне рамок SN.Reload

Если вы хотите повторно использовать функцию LoadData, не ограничивают его возможности для нахождения внутри SN.Reload и вместо этого, возможно (в зависимости от того, что вы хотите), прикрепите его к пространству имен как SN.LoadData

+0

Да .. Проблема была в сфере! Переписал весь скрипт, чтобы сделать функцию перезагрузки доступной, и теперь она работает! Благодаря! –

2

Да, если вы создаете экземпляр SN.Reload. , например:

var obj = new SN.Reload(settings); 

, то вы можете использовать LoadData от этого объекта, как это:

obj.LoadData(); 

И да, вы должны сделать LoadData общественного пользования этим:

this.LoadData = function(){/*your code*/} 
Смежные вопросы