我正在尝试定义一个新窗口,以便在iOS的Classic Titanium应用程序中使用。要使窗口正常工作,需要进行一些预处理。此预处理包括创建UI组件(如标签,表和按钮),组合这些组件以及添加事件侦听器。但是,我不认为这个是最好的方式。有什么见解吗?
function LandingPage() {
this.prepareForExecution();
}
LandingPage.prototype = {
constructor: LandingPage,
_proxy: Ti.UI.createWindow({
title: "To Do List",
backgroundColor: "#FFFFFF",
navBarHidden: false,
orientationModes: [
Ti.UI.PORTRAIT,
Ti.UI.LANDSCAPE_RIGHT,
Ti.UI.LANDSCAPE_LEFT
]
}),
get proxy() {
return this._proxy;
},
prepareForExecution: function () {
this.createUIcomponents();
this.buildUserInterface();
this.addEventListeners();
this.populateTaskTable();
},
...
};
答案 0 :(得分:0)
受Alloy的启发,我会为每个窗口使用CommonJS模块,代码如下:
module.exports = function Controller() {
var $ = this;
// if you need views accessable assign them to $
$.index = Ti.UI.createWindow({
title: "To Do List",
backgroundColor: "#FFFFFF",
navBarHidden: false,
orientationModes: [
Ti.UI.PORTRAIT,
Ti.UI.LANDSCAPE_RIGHT,
Ti.UI.LANDSCAPE_LEFT
]
});
// do whatever pre-processing you need
// interface to get a specific or main view
$.getView = function getView(id) {
return $[id || 'index'];
};
};
答案 1 :(得分:0)
我喜欢使用模块模式和钛出口。
这是最近项目的一个例子:
<强> Views.js 强>
var HubWindow = (function () {
var homeWindow = Ti.UI.createWindow({
height: deviceHeight,
width: deviceWidth,
layout:'vertical',
backgroundColor: '#ffffff'
});
var addView = function(){
for(var i=0; i<arguments.length; i++){
homeWindow.add(arguments[i]);
}
};
var openWindow = function(){
homeWindow.open();
};
return{
add: addView,
open: openWindow
};
})();
exports.HubWindow = HubWindow;
<强> App.js 强>
var App = (function(){
var Views = require('views');
var launch = function(){
Views.HubWindow.open();
...
};
return {
launch: launch
}
})();
App.launch();
我保存了将以编程方式创建的视图的原型。