如何在经典Titanium中正确初始化窗口?

时间:2015-03-07 02:05:56

标签: javascript titanium

我正在尝试定义一个新窗口,以便在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();
    },

    ...
};

2 个答案:

答案 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();

我保存了将以编程方式创建的视图的原型。