2015-03-31 72 views
0

所以我試圖切換到Appcelerator,並且在確定它的工作方式時遇到了一些麻煩。試圖只是有一個簡單的按鈕,加載一個新的窗口並列出一些SQL條目。我沒有收到任何錯誤,但頁面顯示空白。我確定我犯了一個明顯的錯誤,如果有人能指出正確的方向會有所幫助。返回的JSON數組是正確的。在Appcelerator中顯示JSON結果

INDEX.XML

<Alloy> 
    <Window class="container"> 
    </Window> 
</Alloy> 

bookdetails.js

<Alloy> 
    <Window class="container"> 
    </Window> 
</Alloy> 

Index.js

var args = arguments; 
var data = []; 
var win = Ti.UI.createWindow({ 
title: 'Title goes here', 
layout: 'vertical', 
backgroundColor: '#123456', 
}); 

var button = Ti.UI.createButton({ 
    title: 'My button', 
    top: 10, 
    height: 40, 
    width: 200 
}); 

button.addEventListener('click', function() { 
    // Check console 
    Ti.API.info('User clicked the button '); 
    var dataview = Alloy.createController("bookdetails").getView(); 
    dataview.open(); 

}); 
win.add(button); 
win.open(); 

bookdetails.js

var win = Ti.UI.createWindow({ 
title: 'Title goes here', 
layout: 'vertical', 
backgroundColor: '#123456', 
}); 
var data = []; 
var xhr = Titanium.Network.createHTTPClient(); 
    xhr.onload = function(){ 
     var logins = JSON.parse(xhr.responseText); 
     for(var i = 0; i < logins.length; i++) { 
      data.push[logins[i]]; 
     } 
     var table = Ti.UI.createTableView({ objName: 'table' }); 
     for (var i = 0; i <= data.length; i++){ 
      var row = Ti.UI.createTableViewRow({ 
      className: 'row', 
      objName: 'row', 
      touchEnabled: true, 
      height: 100 
     }); 
    table.setData(data); 
    win.add(table); 
} 

    }; 
    xhr.open('GET', 'http://www.xxxxxxxx.com/check.php'); 
    xhr.send(); 

win.open(); 

回答

0

您在index.xml和index.js中定義了一個窗口。你不應該那樣做。

你index.js看起來應該水木清華這樣的:

var args = arguments; 
var data = []; 

var button = Ti.UI.createButton({ 
    title: 'My button', 
    top: 10, 
    height: 40, 
    width: 200 
}); 

button.addEventListener('click', function() { 
    // Check console 
    Ti.API.info('User clicked the button '); 
    var dataview = Alloy.createController("bookdetails").getView(); 
    dataview.open(); 

}); 

$.getView().add(button); // this gets the root window of controller and adds a button to it 

和數據控制器還需要重構,以這樣的事:

var data = []; 
var xhr = Titanium.Network.createHTTPClient(); 
    xhr.onload = function(){ 
     var logins = JSON.parse(xhr.responseText); 
     for(var i = 0; i < logins.length; i++) { 
      data.push[logins[i]]; 
     } 
     var table = Ti.UI.createTableView({ objName: 'table' }); 
     for (var i = 0; i <= data.length; i++){ 
      var row = Ti.UI.createTableViewRow({ 
      className: 'row', 
      objName: 'row', 
      touchEnabled: true, 
      height: 100 
     }); 
    table.setData(data); 
    $.getView().add(table); 
} 

    }; 
    xhr.open('GET', 'http://www.xxxxxxxx.com/check.php'); 
    xhr.send(); 
$.getView().show();