AMD模块中变量的生命周期

时间:2014-04-30 03:53:56

标签: requirejs backbone-views

以下是我保存为名为 listView.js 的文件的代码。我想知道内部变量是如何工作的。例如,变量dtRngPckrBackbone.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;
       }
    });
});

有人可以告诉我这个变量是如何工作的

1 个答案:

答案 0 :(得分:1)

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

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