我有widgetA與數據結構 - d。 widgetA初始化widgetB和傳遞數據給widgetB,像通過變量作爲參考jqueryui部件
$('<div>').widgetB({d:d});
但是,當widgetA變化的數據,在widgetB他們不,那是因爲傳遞變量作爲選項時,jQuery的小部件工廠克隆它們。
如何將參考pf變量傳遞給小部件?
在這個例子中widgetB不會改變價值和兩次打印A.
我有widgetA與數據結構 - d。 widgetA初始化widgetB和傳遞數據給widgetB,像通過變量作爲參考jqueryui部件
$('<div>').widgetB({d:d});
但是,當widgetA變化的數據,在widgetB他們不,那是因爲傳遞變量作爲選項時,jQuery的小部件工廠克隆它們。
如何將參考pf變量傳遞給小部件?
在這個例子中widgetB不會改變價值和兩次打印A.
你可以通過這樣的函數
// 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}))
Wheneve您想獲得變量,請使用:this.options.d()
。當您想更改變量時,請使用this.options.d("newvariable")
。
該方法的有效性基於函數的工作方式:函數可以引用定義在相同範圍內的變量。因此,function d
始終可以指private_var_d
,因爲它們都在相同(匿名)函數中定義。
實際上,我發現一個技巧,通過引用傳遞選項,如果您重新初始化該小部件的選項通過引用傳遞(http://jsfiddle.net/sbNUh/8/)。
可能有多個widgetA小部件,每個小部件都有自己的數據和自己的widgetB小部件。 – codez