以下是我保存为名为 listView.js 的文件的代码。我想知道内部变量是如何工作的。例如,变量dtRngPckr
在Backbone.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;
}
});
});
有人可以告诉我这个变量是如何工作的
答案 0 :(得分:1)
RequireJS缓存模块的返回值,因此它只需要获取一次,所有先前的变量在实例之间共享。要为每个实例使用单独的daterangepicker
,您可以将其附加到您的视图中:
return Backbone.View.extend({
initialize: function (opt) {
this.dtRngPckr = require('daterangepicker');
},
render: function () {
this.dtRngPckr();
},
onClose: function () {
this.dtRngPckr = null;
}
});