Appcelerator 问题:currentWindow:Titanium.UI.Window - 自 SDK 6.0.0 起已从 Titanium 中移除
Appcelerator issue: currentWindow : Titanium.UI.Window - REMOVED from Titanium since SDK 6.0.0
根据 documentation,currentWindow
已与 Titanium.UI.Window.url
属性 一起删除,以便在它们自己的上下文中加载 JavaScript 文件。我已经使用 require()
成功删除了 URL 引用。
我继承了一个引用 currentWindow
的项目来管理不同的页面资产,例如:
var thisWindow = Titanium.UI.currentWindow;
// var thisWindow = Ti.UI.currentWindow; - also doesn't work
var nav = Titanium.UI.iOS.createNavigationWindow({
window: thisWindow
});
thisWindow.nav = nav;
nav.open();
var detailWindow = Ti.UI.createWindow({
backgroundColor: '#fff',
backButtonTitle: '',
navTintColor: '#FFF',
barColor: '#222222',
getURL: 'http://google.com',
titleControl: Ti.UI.createLabel({
//text: 'TITLE',
color: '#FFF',
font: {
fontSize: 16,
fontWeight: 'bold'
}
})
});
detailWindow = require('details');
// add the detail to the nav window
detailWindow.nav = thisWindow.nav;
以下是details.js的内容:
var window = Ti.UI.currentWindow;
var website = window.getURL;
var webview = Titanium.UI.createWebView({
backgroundColor:"#fff",
url:website
});
window.add(webview);
由于不再支持,我收到错误消息:
undefined is not an object (evaluating 'thisWindow.nav=nav')
如何更新此方法(理想情况下无需大量重写,因为有许多页面和页面元素以这种方式链接)。
谢谢!
你可以使用commonjs结构。
如果您需要将 window 从一个文件传递到另一个文件,请使用设置器提供它。
// main.js
var details = require('details');
details.setWindow(myWindowVar);
// details.js
var window;
exports.setWindow = function(win){
window = win;
}
使用 get aso 的另一种方法当然有效。
// details.js
exports.window = window;
// main.js
detailWindow = require('details').window;
不过请记住,在使用 require
时它会加载到内存中。稍后再次要求时,您遇到了同样的事情,它不会重新生成。如果你确实想要,你需要制作创建它的函数,运行那个。
//details.js
function createWindow(){
var win = Ti.UI.createWindow();
return win;
}
根据 documentation,currentWindow
已与 Titanium.UI.Window.url
属性 一起删除,以便在它们自己的上下文中加载 JavaScript 文件。我已经使用 require()
成功删除了 URL 引用。
我继承了一个引用 currentWindow
的项目来管理不同的页面资产,例如:
var thisWindow = Titanium.UI.currentWindow;
// var thisWindow = Ti.UI.currentWindow; - also doesn't work
var nav = Titanium.UI.iOS.createNavigationWindow({
window: thisWindow
});
thisWindow.nav = nav;
nav.open();
var detailWindow = Ti.UI.createWindow({
backgroundColor: '#fff',
backButtonTitle: '',
navTintColor: '#FFF',
barColor: '#222222',
getURL: 'http://google.com',
titleControl: Ti.UI.createLabel({
//text: 'TITLE',
color: '#FFF',
font: {
fontSize: 16,
fontWeight: 'bold'
}
})
});
detailWindow = require('details');
// add the detail to the nav window
detailWindow.nav = thisWindow.nav;
以下是details.js的内容:
var window = Ti.UI.currentWindow;
var website = window.getURL;
var webview = Titanium.UI.createWebView({
backgroundColor:"#fff",
url:website
});
window.add(webview);
由于不再支持,我收到错误消息:
undefined is not an object (evaluating 'thisWindow.nav=nav')
如何更新此方法(理想情况下无需大量重写,因为有许多页面和页面元素以这种方式链接)。
谢谢!
你可以使用commonjs结构。
如果您需要将 window 从一个文件传递到另一个文件,请使用设置器提供它。
// main.js
var details = require('details');
details.setWindow(myWindowVar);
// details.js
var window;
exports.setWindow = function(win){
window = win;
}
使用 get aso 的另一种方法当然有效。
// details.js
exports.window = window;
// main.js
detailWindow = require('details').window;
不过请记住,在使用 require
时它会加载到内存中。稍后再次要求时,您遇到了同样的事情,它不会重新生成。如果你确实想要,你需要制作创建它的函数,运行那个。
//details.js
function createWindow(){
var win = Ti.UI.createWindow();
return win;
}