0
我有一個循環,用於調用異步請求到服務器的每個項目,使用webview創建視圖以便稍後在計算位置後添加到滾動視圖中。在回調中,我得到服務器數據並提供給webview。Titanium - 當通過異步回調加載Webview時不會呈現
當load方法需要一些時間來執行(例如,在一個緩慢的連接中),webview不會被渲染。
這種情況在設備中發生很多次,但在模擬器中很少出現。但是,要輕鬆模擬,只需在加載方法中放置一個斷點,延遲執行。 我懷疑在渲染已經添加的webview時存在問題。
我簡化在一個塊中的代碼以更好地理解:
function createView(){
var view = Ti.UI.createView({
//...
});
var webview = Ti.UI.createWebView({});
view.add(webview);
//Callback to process webview content after receive the server data
view.load = function(serverData){
webview.setUrl(serverData.url);
webview.addEventListener('beforeload', function(){
webview.evalJS("var value="+serverData.value+";");
});
};
return view;
};
var views = new Array();
for(i=0;i < data.length;i++){
views[i] = createView();
//Async request to server
var req = Ti.Network.createHTTPClient();
req.onload = function(){
result = JSON.parse(this.responseText);
views[i].load(result);
}
req.open("POST", "http://myserver.com.br/myservice");
req.send({myParam: data[i].value});
}
var scrollView = Ti.UI.createScrollView({
//...
});
for(i=0;i < views.length;i++){
//Calc the positions, not relevant
views[i].width = calculedValue;
views[i].height = calculedValue;
scrollView.add(views[i]);
}
win.add(scrollView);
im使用鈦SDK 1.8.2和與iOS 5.0.1上的iPad 2運行。