2015-09-28 41 views
0

這裏是我的代碼enyo.app stucks在創建功能

當我從我的應用程序中調用顯式getPreloadedAppListpreLoadedApp.getPreloadedAppList(successCallback1,failCallback1);, 我得到儘可能nApps = 12正確的響應。

但我這樣做是enyo那種create功能時,我的程序被卡在那裏。

enyo.kind({ 
name:'PreApp', 
PreloadedApp : [], 
nApps : 0, 
Response:function(){ 
    this.onSuccess=''; 
    this.onFailure=''; 
    this.id = 0; 
}, 
create: function(){ 
     this.inherited(arguments); 
     this.init(); 
}, 
getPreloadedAppList: function(getListSuccessCallback,getListFailCallback){ 
    var param = new this.Response(); 
    param.onSuccess = getListSuccessCallback; 
    param.onFailure = getListFailCallback; 
    hcap.preloadedApplication.getPreloadedApplicationList(param); 
}, 
launchPreloadedApp: function(launchSuccessCallback,launchFailCallback,id){ 
    var param = new this.Response(); 
    param.id = id; 
    param.onSuccess = launchSuccessCallback; 
    param.onFailure = launchFailCallback; 
    hcap.preloadedApplication.launchPreloadedApplication(param); 
}, 
init : function(){ 
    var suuccessCB = function(param){ 
     this.nApps = param.list.length; 
     for (var i = 0; i < this.nApps; i++) { 
      this.PreloadedApp.push(param.list[i]); 
     } 
    } 
    var failureCB = function(param){ 
     alert("Failure " + param.errorMessage); 
    } 
    this.getPreloadedAppList.apply(this,[suuccessCB,failureCB]); 
} 
}); 

我錯過了什麼?

回答

1

我猜你需要綁定你的successCB功能是這樣的:

init : function(){ 
var suuccessCB = this.bindSafely(function(param){ 
    this.nApps = param.list.length; 
    for (var i = 0; i < this.nApps; i++) { 
     this.PreloadedApp.push(param.list[i]); 
    } 
}) 
var failureCB = this.bindSafely(function(param){ 
    alert("Failure " + param.errorMessage); 
}) 
this.getPreloadedAppList.apply(this,[suuccessCB,failureCB]); 

}