Requirejs AMD模块中变量的生命周期

Requirejs AMD模块中变量的生命周期,requirejs,backbone-views,Requirejs,Backbone Views,下面是我保存为名为listView.js的文件的代码。我想知道内部变量是如何工作的。例如,变量dtRngPckr是在主干内的initialize.View中定义的,每当应用程序移动到另一个部分时,我调用onClose函数使所述变量为空。当我需要重用这个模块时,渲染函数中一定会出现错误。它触发的错误不是一个函数 define(function (require) { "use strict"; var $ = require('jquery'), _

下面是我保存为名为listView.js的文件的代码。我想知道内部变量是如何工作的。例如,变量
dtRngPckr
是在
主干内的initialize.View
中定义的,每当应用程序移动到另一个部分时,我调用onClose函数使所述变量为空。当我需要重用这个模块时,渲染函数中一定会出现错误。它触发的错误不是一个函数

define(function (require) {
    "use strict";
    var $        = require('jquery'),
        _        = require('underscore'),
        Backbone = require('backbone'),
        dtRngPckr;

    return Backbone.View.extend({
       initialize: function (opt) {
           dtRngPckr = require('daterangepicker');
       },
       render: function () {
          dtRngPckr();
       },
       onClose: function () {
          dtRngPckr = null;
       }
    });
});

有人能告诉我这个变量到底是如何工作的吗?

RequireJS缓存模块的返回值,因此它只需要获取一次,所有先前的变量都在实例之间共享。要对每个实例使用单独的
daterangepicker
,可以将其附加到视图:

return Backbone.View.extend({
   initialize: function (opt) {
       this.dtRngPckr = require('daterangepicker');
   },
   render: function () {
      this.dtRngPckr();
   },
   onClose: function () {
      this.dtRngPckr = null;
   }
});

您能否在问题中添加一个指向您正在使用
require('daterangepicker')加载的库的链接?
?谢谢。将其附加到视图是最好的方法。我认为这可能是目前的解决方案。