RequireJS Метод разделения проблем и переменная между двумя модулями, имеющими зависимости - PullRequest
0 голосов
/ 06 февраля 2019

В требовании JS в asp.net MVC я пытаюсь получить доступ к переменной и методу, используемому в другом модуле.Как это сделать ?Приведенный ниже пример приведен нижефункция ($) {

 $(function () {

 var messageToAlert = 'Sample Message'; //Message Could be dynamic
    function DOWork(){
        alert('hi'); //Or other code using Jquery table
        alert(messageToAlert);
        messageToAlert = 'Change message ';
    }

 });


}

PartialViewA In ParentPageA

require([
'jquery',
'bootstrap',
'jqGrid',
'ParentPageA'],
function ($,ParentPageA){


//ParentPageA - is Undefined

 $(function () {

  //How to Access messageToAlert variable ?
  //How to Access DOWork()
  //Need to access back the changed MessageToAlert variable as well
 });


}

Является ли определение единственным вариантом?если я использую Define - он все еще сможет загружать другие зависимые модули внутри определения?Поскольку мои функции и переменные зависят от других библиотек, которые могут быть запущены (например, функции, которые Jquery, Календарь и т. Д.).

1 Ответ

0 голосов
/ 06 февраля 2019

Исправлено как показано ниже

define('MYFUNCMOD', ['https://code.jquery.com/jquery-3.3.1.min.js'] ,function(jQuery) {
  // Window settings 
  var Message = "Initial Message";
  function change() {
    this.Message = "Changed Triggered";
  }
  
  function docReadyDisp()
  {
  $(document).ready(function(){
  
  	alert('docReadyDisp Doc Ready');
  
  });
  }

  return {
    Message: Message,
    change:change,
    docReadyDisp : docReadyDisp
  };
		
});


// (is run on dom load)
require(['https://code.jquery.com/jquery-3.3.1.min.js','MYFUNCMOD'], function(jQuery,system) {
  $(document).ready(function() {
    alert(system.Message);
    system.change();
     alert(system.Message);
     system.docReadyDisp();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
...