Проблема с Appcelerator: currentWindow: Titanium.UI.Window - УДАЛЕНО из Titanium начиная с SDK 6.0.0

1

Согласно документации, currentWindow был удален вместе с свойством Titanium.UI.Window.url для загрузки файлов JavaScript в их собственных контекстах. Я успешно удалил ссылки URL, используя require().

Я унаследовал проект, который ссылается на 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')

Как обновить этот метод (в идеале без огромного переписывания, так как есть много страниц и связанных с ним страниц).

Спасибо!

Теги:
appcelerator
titanium

1 ответ

0
Лучший ответ

Вы можете использовать структуру commonjs.

Если вам нужно передать окно из одного файла в другой, предоставьте его с помощью сеттеров.

// main.js
var details = require('details');
details.setWindow(myWindowVar);

// details.js
var window;
exports.setWindow = function(win){
    window = win;
}

Другое дело, используя, конечно, работу aso.

// details.js
exports.window = window;

// main.js
detailWindow = require('details').window;

Имейте в виду, что при использовании require он был загружен в память. Когда требуется повторное использование позже, вы делаете одно и то же, оно не будет воспроизводиться. Если вы хотите, чтобы вам нужно было создавать функции, которые его создают, и запускать их.

//details.js
function createWindow(){
  var win = Ti.UI.createWindow();
  return win;
}
  • 0
    Спасибо за ответ - я посмотрю на это сегодня. Для чего myWindowVar ?
  • 0
    просто заполнитель, где вы храните ссылку на соответствующее окно
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню