2017-01-19 2 views
0

У меня есть виджет, который содержит кнопку «Назад», при нажатии этой кнопки я хочу закрыть окно, в котором есть виджет (родительское окно). вот мой widget.xml:В Alloy Titanuim, как закрыть окно родителя виджета

<Alloy> 
    <View id="topBar"> 
     <View id="leftItems"> 
      <ImageView id="backIcon" onClick="previousPage" /> 
      <ImageView id="logo" /> 
     </View> 
     <View id="midItems"> 
      <Label id="pageTitle"></Label> 
      <ImageView id="searchIcon" onClick="searchIcon" platform="ios" /> 
      <SearchBar id="searchBar" platform="ios" /> 
      <SearchView id="searchView" ns="Ti.UI.Android" platform="android" onBlur="pageTitleVisiability" onFocus="pageTitleVisiability" /> 
     </View> 
     <View id="rightItems"> 
      <ImageView id="createIcon" onClick="createPost" /> 
     </View> 
    </View> 
</Alloy> 

и widget.js:

function previousPage(argument) { 
    // closing the window 
} 

я попытался отправить настраиваемое свойство в виджете с именем окна, как это:

сплава . .createController ('WindowName') Close();

, но он говорит, что окно не открывается

ответ

1

Вы не можете создать контроллер в виджете и попытаться закрыть его, вы создаете новый экземпляр окна, а не ссылки на контроллер вызова. Я бы использовал обмен сообщениями, чтобы выполнить закрытие. Внутри функции previousPage добавьте «$ .trigger (« closeParent »); для сигнала, чтобы закрыть окно. Затем внутри вызывающего окна (где ссылается виджет) добавьте что-то вроде «$ .. on (« closeParent »,); а затем закройте окно в функции. Я надеюсь, что в этом есть смысл.

+0

i trie d для запуска события в функции previousPage и в вызывающем окне $ .on ('closeParent', function() {alert ('something');}); но ничего не случилось, любая помощь –

+0

теперь работает, когда я помещаю событие «on» в идентификаторе виджетов так: «$ widgetId.on (« closeParent », function() {alert ('something');});" , благодаря. –

0

Настройка обратных вызовов должна решить вашу проблему.

ваши "widget.js":

var previousPageCallback; 

function previousPage() { 
    if(previousPageCallback) previousPageCallback(); 
} 

module.exports = { 
    previousPageCallback : previousPageCallback 
}; 

ваш "previousWindow.xml"

<Window> 
    <Widget id="myWidget" src="<whateverYourWidgetNameIs>"/> 
</Window> 

ваших "previousWindow.js" (окно, где вы используете виджет)

$.myWidget.previousPageCallback = $.previousWindow.close(); 

Спасибо n cheers

+0

it return "Окно не открыто. Игнорирование этого закрытого вызова" –

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