function + module.exports

时间:2013-12-04 11:08:51

标签: titanium titanium-mobile commonjs titanium-modules

我对钛上的module.export有问题。我尝试了https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium,但它根本不起作用。

我有两小段代码。 App.js:

var  fenetreBase = Titanium.UI.createWindow({fullscreen:true,backgroundColor:"white",exitOnClose:true});
fenetreBase.open();
var vueimage = new (require('UI/viewimage'))();

vueimage.test();
fenetreBase.add(vueimage);
文件夹UI中的

和viewimage.js。

function viewimage() {
var lavue = Ti.UI.createView({backgroundColor:'red' }); 
var item =...
lavue.add(item...);
return lavue;
}

viewimage.prototype.test = function() {
Ti.API.info("test");
};

module.exports = viewimage;

我说错误

  

对象#< view>在app.js vueimage.test()

中没有方法'test'

在我看来,我遵循上面wiki中的“Instantiable Objects”的例子,但我可能听不懂。我希望我犯了一个愚蠢的错误。我尝试了许多其他的东西,每个都比其他东西更丑,但它无论如何都不起作用。

有人可以告诉我错误在哪里吗?

1 个答案:

答案 0 :(得分:2)

你的错误是假设你在运行时有一个viewimage实例:

var vueimage = new (require('UI/viewimage'))();

您正在获取

的实例
var lavue = Ti.UI.createView({backgroundColor:'red' }); 

没有测试属性。

也许您可以使用这样的对象:

function viewimage() {
    var result = {};

    var lavue = Ti.UI.createView({backgroundColor:'red' }); 
    var item =...
    lavue.add(item...);
    result.lavue = lavue;
    result.test = function() {
        Ti.API.info("test");
    };
    return result;
}

修改

在你的App.js中:

var vueimage = new (require('UI/viewimage'))();

vueimage.test();
fenetreBase.add(vueimage.lavue);