如何从钛工作室android项目中的另一个js文件访问js文件

时间:2013-06-12 19:39:20

标签: android model-view-controller titanium titanium-alloy

我是钛工作室和合金mvc框架的新手。我在控制器文件夹中有两个js文件。一个是index.js(在创建项目时自动创建)和home.js.现在我想从index.js打开关于按钮事件的home.js(比如从eclipse android app中的另一个活动开始一个新活动)。这是我的代码:

index.js:

function login_Click(e){
    Ti.include('home.js');
    hello();
}       

$.index.open(); 

其中login_click(e)是按钮onClick事件。

和home.js:

function hello(){
    //$.home.open();
    alert("Opened");
}
//exports.hello = hello;

但每当我运行它并单击按钮时它会给出错误

位置:[25,1]合金/控制器/ home.js

按摩:未捕获的参考错误:模块未定义

源:* module.export =控制器;

这是我的合金/ controllers / home.js:

function Controller() {
    require("alloy/controllers/BaseController").apply(this, Array.prototype.slice.call(arguments));
    arguments[0] ? arguments[0]["__parentSymbol"] : null;
    arguments[0] ? arguments[0]["$model"] : null;
    var $ = this;
    var exports = {};
    $.__views.home = Ti.UI.createWindow({
        backgroundColor: "white",
        id: "home"
    });
    $.__views.home && $.addTopLevelView($.__views.home);
    $.__views.label = Ti.UI.createLabel({
        text: "Hell Yeah",
        id: "label"
    });
    $.__views.home.add($.__views.label);
    exports.destroy = function() {};
    _.extend($, $.__views);
    $.home.open();
    _.extend($, exports);
}

var Alloy = require("alloy"), Backbone = Alloy.Backbone, _ = Alloy._;

module.exports = Controller;

Plz在这里帮助我。我试过require()方法。我尝试使用$ .home.open()直接打开;但没有任何效果。我需要做什么???? Thanx提前....

2 个答案:

答案 0 :(得分:4)

你必须使用Alloy来做这个,打开Home controller视图就这样做:

function login_Click(e){
    var homeController = Alloy.createController('home');
    // If home.xml's container is a Window this will work
    homeController.getView().open();
}

答案 1 :(得分:0)

或者,如果您尝试在其他文件中调用其他js文件的方法,则需要导出该函数以使用它。 例如:

  

home.js

exports.myFunction  = function(){
    alert("I am in");
}
  

index.js

var home = require("home");
home.myFunction();

然后你去。