2015-05-18 25 views
0

我想回到舊的窗口/移動到新的窗口,但得到一個錯誤時,以前它是工作的罰款的對象不是一個功能到現在爲止得到一個新的錯誤遺漏的類型錯誤:按後退按鈕

Uncaught TypeError: object is not a function 

這裏是我的代碼:app.js

var win = Titanium.UI.createWindow({ 
title : 'my app', 
backgroundColor : '#fff', 
fullscreen : false, 
navBarHidden : true, 
layout : 'vertical' 
}); 

submitbtn.addEventListener('click', function(e) { 

     var createnewWindowback = require('ui/page1'); 
     new createnewWindowback().open(); 
     win.close(); 
}); 

page1.js

var win = Titanium.UI.createWindow({ 
title : 'my app', 
backgroundColor : '#fff', 
fullscreen : false, 
navBarHidden : true, 
layout : 'vertical' 
}); 
win.addEventListener('android:back', function(e) { 
var createnewWindowback = require('app'); 
     new createnewWindowback().open(); 
     win.close(); 
}); 

Plz幫助

+0

您需要('app');.但是app.js不會導出任何東西。 [CommonJS模塊在鈦](https://wiki.appcelerator.org/display/guides2/CommonJS+Modules+in+Titanium) – jsplaine

+0

我甚至嘗試過在app.js中使用它 var createnewWindowback = require('ui/pagelogin 「); new createnewWindowback()。open(); 和pagelogin.js我使用這個相同的代碼移動到另一個頁面,考慮page1.js,如果我們點擊返回按鈕從page1.js返回到頁面pagelogin.js .. 此代碼doesnot工作,也許它的到期到鈦sdk版本,但我無法確認 – Manikandan

回答

1

首先,讓我承認,我使用合金代替我的所有窗口處理 - 所以這是略有不同。但是我的所有邏輯都使用CommonJS模塊。

基本上,如果您使用CommonJS模塊,您需要將它放在項目的「lib」文件夾中。因此,您所指的庫應該位於:

lib/ui/app.js 
lib/ui/page1.js 

爲您的require語句找到它們。所以這可能是第一個檢查的地方。

然後,您將不得不告訴CommonJS模塊您將從模塊內部讓「外部」調用/「知道」什麼。您將使用的一個做到這一點:

exports.myMethod = function() {....} 
module.exports = MyObject 

只有在後面的例子,你可以寫類似

new createnewWindowback().open(); 

所以,很顯然,你的代碼會如果沒有在這條語句失敗需要:-)

接下來,你的「對象」必須實現一個方法「open()」才能工作。

我建議你看看Appcelerator University videos - 然後下載Kitchen Sink應用程序並查看代碼。

/John

+0

是的,我做了同樣的步驟..我沒有複製粘貼完整的代碼,因爲它將很難爲你所有調試..一路上感謝您的想法.. – Manikandan