RequireJS问题共享方法和2个具有依赖性的模块之间的变量

时间:2019-02-06 17:00:43

标签: javascript asp.net-mvc requirejs amd

在asp.net MVC中的require JS中,我试图访问另一个模块中使用的变量和方法。怎么做 ?提供了以下示例

  1. ParentPageA

在JS下的ParentPageA

要求([     'jquery',     'bootstrap',     'jqGrid'],     函数($){

 $(function () {

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

 });


}
  1. ParentPageA中的PartialViewA

    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-它仍然可以在define内加载其他依赖模块吗?由于我的函数和变量依赖于其他库才能运行(如Jquery,Calendar等的函子)。

1 个答案:

答案 0 :(得分:0)

固定如下

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>