2013-09-26 44 views
1

我是Titanium的新用户,并为iPhone创建虚拟应用。 我正在使用教程中的代码。 但我卡在'itemSelected'eventListener中,看起来像不在这里工作。 我试图通过添加按钮,标签和他们的点击事件,即使他们不工作。 我没有在这里得到我的错误。 所以请指教。 在此先感谢。Titanium EventListener不工作

我ApplicationWindow.js是..

//Application Window Component Constructor 

function ApplicationWindow() { 
//declare module dependencies 
var MasterView = require('ui/listView_common/MasterView'), 
    DetailView = require('ui/listView_common/DetailView'); 

//create object instance 
var self = Ti.UI.createWindow({ 
    backgroundColor:'#fff' 
}); 

//construct UI 
var masterView = new MasterView(), 
    detailView = new DetailView(); 

//create master view container 
var masterContainerWindow = Ti.UI.createWindow({title:'List View'}); 
masterContainerWindow.add(masterView); 

//create detail view container 
var detailContainerWindow = Ti.UI.createWindow({left:100,title:'Detail View'}); 
detailContainerWindow.add(detailView); 

//create iOS specific NavGroup UI 
var navGroup = Ti.UI.iPhone.createNavigationGroup({ 
    window:masterContainerWindow 
}); 
self.add(navGroup); 

//add behavior for master view 
masterView.addEventListener('itemSelected', function(e) { 
    alert("Alert"); 
    navGroup.open(detailContainerWindow); 
    detailView.showArticle(e.link); 
}); 

function refreshData() { 
    var file = Ti.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory+'jsonFiles/data.json'); 
    var data = file.read().text; 
    var json = JSON.parse(data); 
    masterView.refreshDataTable(json); 
} 

// load data 
refreshData(); 

return self; 
}; 
module.exports = ApplicationWindow; 

和我的 'MasterView.js' 是..

var createRow = function(item) { 

var tablerow = Ti.UI.createTableViewRow({ 
    height: 90, 
    link: item.link, 
    className: 'itemRow', 
    hasChild: true 
}); 
var imageview = Ti.UI.createImageView({ 
    image: item.image, 
    height: 55, 
    width: 68, 
    left: 5, 
    top: 3 
}); 
var titleview = Ti.UI.createLabel({ 
    text: item.title, 
    color: '#000', 
    font: { 
     fontSize: 16 
    }, 
    left: 83, 
    right: 5, 
    top:5, 
    width:300 
}); 
var dateview = Ti.UI.createLabel({ 
    text: item.pubDate, 
    textAlign: 'center', 
    color: '#444', 
    font: { 
     fontSize: 12  
    }, 
    height: 'auto', 
    width: 68, 
    left: 5, 
    top: 60 
}); 
var nameview = Ti.UI.createLabel({ 
    text: item.firstName +" " + item.lastName, 
    color: '#000', 
    font: { 
     fontSize: 14 
    }, 
    left: 83, 
    right: 5, 
    top:30 
}); 
var descriptionview = Ti.UI.createLabel({ 
    text: item.description, 
    color: '#000', 
    font: { 
     fontSize: 12 
    }, 
    left: 83, 
    top:50 
}); 
tablerow.add(imageview); 
tablerow.add(dateview); 
tablerow.add(titleview); 
tablerow.add(nameview); 
tablerow.add(descriptionview); 

return tablerow; 
}; 

//Master View Component Constructor 
function MasterView() { 
var self = Ti.UI.createView({ 
    backgroundColor:'#fff' 
}); 

var table = Ti.UI.createTableView(); 
self.add(table); 
table.addEventListener('click', function(e) { 
    self.fireEvent('itemSelected', { link: e.row.link }); 
}); 

self.refreshDataTable = function(data) { 
    if (Object.prototype.toString.apply(data) === '[object Array]') { 
     var rows = []; 
     for (var i = 0; i < data.length; i++) { 
      rows.push(createRow(data[i])); 
     } 
     table.setData(rows); 
    } 
}; 

return self; 
} 

module.exports = MasterView; 

DetailView.js

//Detail View Component Constructor 
function DetailView() { 
var self = Ti.UI.createView(); 
var webview = Ti.UI.createWebView(); 
self.add(webview); 

self.showArticle = function(url) { 
    webview.url = url; 
}; 

webview.addEventListener('load', function(e) { 
    self.fireEvent('articleLoaded'); 
}); 

return self; 
} 
module.exports = DetailView; 
+0

在我ApplicationWindow功能,我想这码http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.iPhone.NavigationGroup ,仍不工作。 – Avin

+0

您可以添加itemSelected事件触发的位置和方式吗? – mwfire

+0

嗯...... table.addEventListener('click')'工作吗? 如果你在函数中加入了一个警告,它会显示吗? – mwfire

回答

0

尝试在使用Titanium.App.addEventListener您的代码如下

//add behavior for master view 
    Ti.App.addEventListener('itemSelected', function(e) { 
    alert("Alert"); 
    navGroup.open(detailContainerWindow); 
    detailView.showArticle(e.link); 
    }); 

和火象

table.addEventListener('click', function(e) { 
    Ti.App.fireEvent('itemSelected', { link: e.row.link }); 
}); 

此事件会做的伎俩

您也可以参考what is fireevent how do i use it

1

itemSelected不是一个事件类型的窗口。这就是为什么它不起作用。 尝试单击事件并获取apiName并根据apiName执行您的工作。

例子:

windowNAme.addEventListener('click',function(e){ 
    //when we click on button then we get id from this 
    getId=e.source.id; 
    if(getId=="mybutton") 
    { 
     perform your action here; 
    } 
})