2015-02-10 3 views
0

Я искал ответы, почему мой код javascript полностью находится на моем веб-хосте. У меня есть существующие функции javascript, которые работали нормально, пока я не попытался их модифицировать, используя шаблон раскрывающего модуля в javascript, потому что из того, что я собрал, это хорошая практика, чтобы уменьшить загрязнение глобального пространства имен. За пределами этой области нет вызовов функций, поэтому я не использовал return to point to functions. Он работал нормально в разных браузерах при тестировании из Visual Studio.javascript, показывающий шаблон модуля, проигнорированный на сервере

Есть ли что-то, что может быть на сервере godaddy, который мне нужно настроить? Я попытался вызвать их для поддержки, но никакой помощи. Ниже приведен образец моего кода. На самом деле у меня есть больше функций в этой области, но я не могу этого рассказать. Заранее спасибо.

myModule = (function() { 

    //add upDate 
    function timeOfUpdate { 
    var timeOfUpdate = new Date(document.lastModified); 
     $("#lastUpdate").append(timeOfUpdate); 

    } 
    //add some more functions 
    function modTwo { 
    //add code to execute.. 
    } 
})(); 

ответ

2

Я не знаю точно, что вы пытаетесь сделать с этим определением модуля, но вы ничего не возвращаетесь из модуля, так что функции внутри модуля являются локальными в модуле и не могут использовать извне модуля. Если вы посмотрите на this reference on the revealing module pattern, вы ясно увидите, что они возвращают объект с методами на нем, и это то, что назначено переменной модуля.

Возможно, что вы хотели сделать, это:

var myModule = (function() { 

    return { 
     //add upDate 
     timeOfUpdate: function { 
      var timeOfUpdate = new Date(document.lastModified); 
      $("#lastUpdate").append(timeOfUpdate); 

     }, 
     //add some more functions 
     modTwo: function { 
      //add code to execute.. 
     } 
    } 
})(); 

Это возвращает объект из IIFE так, что MyModule становится объектом, который имеет свои методы timeOfUpdate() и modTwo() как свойства объекта.

Затем вы можете получить доступ к функциям, как:

myModule.timeOfUpdate(); 
myModule.modTow(); 

Если вы не пытаетесь использовать какие-либо из этих функций из вне модуля, то вы будете иметь, чтобы помочь нам более подробности о том, что вы пытаетесь сделать и какие ошибки вы видите. Вы можете обернуть кучу кода в IIFE, как будто вы делаете все отлично, и это не вызовет никаких проблем. Существует точка ZERO при присвоении имени модуля, как в myModule = ..., если вы ничего не возвращаете из этого IIFE, поэтому мне кажется, что вы, по крайней мере, не в том направлении, но не понимаете, что вы пытаетесь делать с этим модулем или с теми ошибками, с которыми вы сталкиваетесь, мы не можем больше помочь.


Кроме того, ваш пример показывает некоторые определения локальных функций, но не показывает вызова любых функций, поэтому ничего не произойдет, пока вы не вставите код, который на самом деле вызывает свои функции.

+0

Да jfriend00. Спасибо. Теперь мой скрипт работает. Вызов основного объекта и привязка timeOfUpdate() - это часть, которую мне не хватает. Я был заперт в мысли, что, поскольку у меня был оператор самозапускания в конце значения myModule, он автоматически вызывал методы, которые у меня были внутри его области, без вызова. Я ценю, что вы указываете мне на эту проблему. – smundoKo2

+0

@ smundoKo2 - так как вам кажется, что вы новичок в StackOverflow, знаете ли вы, что когда вы ответите на свой вопрос, вы можете указать «лучший ответ» на свой вопрос, нажав зеленую галочку слева от ответа. Это заработает как вы, так и человек, предоставивший ответ на некоторые репутационные очки здесь, в StackOverflow. Накопление очков репутации принесет вам больше привилегий. – jfriend00

+0

спасибо jfriend00. Я запомню это. – smundoKo2

Смежные вопросы