4

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

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=控制器;

这是我的合金/控制器/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;

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

4

2 回答 2

4

您必须使用 Alloy 来执行此操作,要打开 Home 控制器视图,只需执行以下操作:

function login_Click(e){
    var homeController = Alloy.createController('home');
    // If home.xml's container is a Window this will work
    homeController.getView().open();
}
于 2013-06-12T21:25:54.100 回答
0

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

主页.js

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

index.js

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

你去吧。

于 2015-05-07T11:51:37.157 回答