EasyUI panel 配合 Js 物件 開啟多個相同Url 問題
發現 大Bug
function SetNumObj(CallObj,putWin) {
var Mythis = this;
這篇是延續
Javascript 物件(類別) this很重要 bind()更重要
這次碰到一個奇怪問題
例如一次開3個panel
物件寫法是
function SetNumObj(CallObj,putWin) {
Mythis = this;
Mythis.CallObj = CallObj;
Mythis.putWin = putWin;
Mythis.Run_type = 0;
Mythis._OpenWin= function ()//自行定義
{
if ("#WinA" == Mythis.putWin) Mythis.Run_type = 1;
if ("#WinB" == Mythis.putWin) Mythis.Run_type = 2;
if ('#WinC' == Mythis.putWin) Mythis.Run_type = 3;
$(Mythis.putWin).panel({ title: "", href: "SelNum.html", onLoad: Mythis._Init.bind(Mythis) });
}
Mythis._Init = function () {
switch (Mythis.Run_type) {
case 1: RunA(); break;
case 2: RunB(); break;
case 3: RunC(); break;
}
}
}
************************************************************
然後用
A1=new SetNumObj(null,"#panelA");
A1._OpenWin();
B1=new SetNumObj(null,"#panelB");
B1._OpenWin();
C1=new SetNumObj(null,"#panelC");
C1._OpenWin();
****************************************
問題來了 不會如想像中 各自跑資料
只有 C1 有動作
用debug 查 switch (Mythis.Run_type) 發現這邊的確衝進來三次
但是 三次 Mythis.Run_type 都是 3
挖哩勒 怎會這樣?
設個alert() 查 A1 B1 C1 各自的 Run_type 都是 1 2 3 沒錯
但怎麼會?
我的推論是 onLoad: Mythis._Init.bind(Mythis) 這邊有問題
開3個Object 的確跑3次 只是傳進去的 Mythis 都是最後一個 Object
所以 Mythis.Run_type 3次都是 3
挖哩勒 怎會這樣?
如果分別寫3個 Object 就失去Object 的意義
***************************************
萬萬沒想到 最後 我還是解決了 哈~
先試
onLoad: Mythis._Init.bind(Mythis,Mythis.Run_type)
Mythis._Init = function (Rtype) { 接收 Mythis.Run_type
這次 進來 Rtype 就乖乖的 分別是 1 2 3
但我不只用到 Mythis.Run_type 還有一堆 總不能 加一長串吧? 打死我吧
乾脆 試 整個 Object 再傳一次
onLoad: Mythis._Init.bind(Mythis,Mythis)
Mythis._Init = function (MyObject) { 接收 整個 Object
看他帶進來的 MyObject.Run_type 分別是 1 2 3
就這樣解決了....
留言
張貼留言