在Alloy Titanuim中,如何关闭窗口小部件的父窗口

时间:2017-01-19 17:56:54

标签: titanium titanium-mobile titanium-alloy

我有一个包含后退按钮的小部件,当单击该后退按钮时,我想要关闭具有小部件的窗口(父窗口)。 这是我的widget.xml:

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

我尝试在窗口小部件中发送自定义属性,窗口名称如下:

Alloy.createController(&#39; windowName&#39)关闭();

但它说窗口没有打开

2 个答案:

答案 0 :(得分:1)

您无法在窗口小部件中创建控制器并尝试关闭它,您正在创建窗口的新实例,而不是引用调用控制器。我会使用消息来执行关闭。在你的previousPage函数中,添加“$ .trigger('closeParent');”发出信号关闭窗户。然后在调用窗口(引用窗口小部件)内添加类似“$ .. on('closeParent',);;”的内容。然后关闭该函数中的窗口。我希望这是有道理的。

答案 1 :(得分:0)

设置回调可以解决您的问题。

你的&#34; widget.js&#34; :

var previousPageCallback;

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

module.exports = {
    previousPageCallback : previousPageCallback
};

您的&#34; previousWindow.xml&#34;

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

你的&#34; previousWindow.js&#34; (您使用小部件的窗口)

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

谢天谢地