2013-12-04 3 views
0

У меня возникла проблема с module.export на титане. Я пробовал следовать за https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium, но он вообще не работает.function + module.exports

У меня есть 2 небольших фрагмента кода. 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); 

и viewimage.js в папке UI.

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; 

У меня есть сообщение об ошибке говорящее

Объект # < вид > не имеет какого-либо метода 'тест' в app.js vueimage.test()

На мой взгляд, я следую пример «Instantiable Objects» в вики выше, но я, возможно, ничего не понял. Я ожидаю, что совершу глупую ошибку. Я пробовал много других вещей, каждый более уродливый, чем другие, и это все равно не работает.

Может ли кто-нибудь сказать мне, где ошибка?

ответ

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; 
} 

EDIT

В вашем App.js:

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

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

Это умное. Тинк много. для тех, кто может иметь такую ​​же проблему. не забудьте сделать в app.js: fenetreBase.add (vueimage.lavue); вместо .add (vueimage); – ssbb

+0

Уверенный :-). Я отредактировал ответ с вашего комментария – kabomi

+0

@kabomi: Хороший ответ :) – Anand

Смежные вопросы