传递变量作为jqueryui小部件的引用
Pass variable as reference to jqueryui widget
我有一个具有数据结构的widgetA - d. widgetA初始化widgetB并将数据传递给widgetB,如
$('<div>').widgetB({d:d});
但是,当widgetA中的数据发生变化时,在widgetB中它们不会发生变化,这是因为当将变量作为选项传递时,jquery widget工厂会克隆它们。
如何传递引用pf变量小部件?
http://jsfiddle.net/sbNUh/在这个例子中,widgeb不改变值,两次都打印a。
实际上我发现了一个通过引用传递选项的技巧,如果您重新初始化小部件,该选项将通过引用传递(http://jsfiddle.net/sbNUh/8/)。
你可以像这样传递一个函数
http://jsfiddle.net/sbNUh/1/// widjet A
self.a = $('<div>').widgetB({ d: function() { return d; }}).appendTo(el);
....
// widjet B
$('#con').append('<div>'+this.options.d().a+'</div>');
这也表明您正在积极地检索最新状态
将d
改为函数,如下所示:
var private_var_d = "A";
function d(set){
if(typeof set != "undefined") private_var_d = set;
return private_var_d;
}
(self.a=$('<div>').widgetB({d:d}))
当您想要获得变量时,使用:this.options.d()
。当需要更改变量时,使用this.options.d("newvariable")
。
此方法的有效性取决于函数的工作方式:函数可以引用定义在同一定义范围内的变量。因此,function d
总是可以引用private_var_d
,因为它们都在同一个(匿名)函数中定义。
小提琴:http://jsfiddle.net/sbNUh/2/。
您可以尝试保留每个小部件使用的全局变量
相关文章:
- 引用对象中的通用值
- 如何在JavaScript中将字符串转换为函数引用
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 在输入字段中将最小金额设置为
- 在动态创建的元素上获取对特定选择器的引用
- IIFE中的函数引用不可用
- 如何通过引用var Using DataTables来进行分页或排序
- 如何在创建键时引用来自同一对象的键
- 砌体不能填补小缺口
- Datatables:通过DOM数据源中的名称引用列
- 自引用回调
- 引用类变量中的原型方法
- 如何通过按 id 注册但未在任何 DOM 节点中引用来删除 dojo 小部件
- 传递变量作为jqueryui小部件的引用
- 在哪里放置小部件的脚本引用(部分页面)
- 如何使用插件引用在外部调用jQuery小部件公共方法
- doh测试后仍然保留Dojo小部件变量引用
- JQuery小部件-通过引用传递选项