首页 > requirejs 模块间传递参数

requirejs 模块间传递参数

问题:模块间如何传递参数。

描述,模块A有一变量a,点击页面的按钮后,a的值会改变,如何在模块B中访问到A.a。在模块B中,访问到的一直是A.a原来值。

我刚学习requireJS,请教一下~

A模块

define(['jquery'], function($){

  var a = 1;

  $('#seg_test').on('click',function(){
    a = 2;
  })

  return {
    a: a,
    seg: function(){
      
    }
  }
  
});

B模块

define(['jquery', 'modules/seg'], function($, seg){

  $('#test').on('click',function(){
    debugger
    console.log('in test:'+seg.a);
  })

  return {
    test: function(){
      
    }
  }
  
});

这种,最好不去找模块是否支持参数传递之类的。模块其中一个要求就是隔离。

可以通过其他的方式来处理,比如给模块提供初始化操作(提供一个init,create之类的方法,甚至直接对外暴露为一个对象,要求使用者进行实例化)。

这样,你就可以将你需要的参数传递给模块内部进行处理。


楼主,其实你在export导出a的时候,导出的已经不是引用值了。而是一个数字,也就是说,你这么写:

return {
    a: a,
    seg: function(){
    }
}

就等于这么写了:

return {
    a: 1,
    seg: function(){
    }
}

因为你return的a并非引用型。如果你想在B模块儿中也可以更改A模块中的a变量的话,建议导出引用型变量。
lz试试这样呢?
A模块:

define(['jquery'], function($){
  var obja = {
     a: 1
  };
  $('#seg_test').on('click',function(){
    obja.a = 2;
  })

  return {
    obja: obja,
    seg: function(){
    }
  }
});

B模块

define(['jquery', 'modules/seg'], function($, seg){
  $('#test').on('click',function(){
    debugger
    console.log('in test:'+seg.obja.a);
  })
  return {
    test: function(){
    }
  }
});
【热门文章】
【热门文章】