在 Alloy Titanium 中,如何关闭小部件的父级 window
In Alloy Titanuim, How to close widget's parent window
我有一个包含后退按钮的小部件,单击该后退按钮时我想关闭具有该小部件的 window(父 window)。
这是我的 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
}
我尝试在小部件中发送带有 window 名称的自定义 属性,如下所示:
Alloy.createController('windowName').close();
但是它说window没有打开
您无法在小部件中创建控制器并尝试关闭它,您正在创建 window 的新实例,而不是引用调用控制器。我会使用消息传递来执行关闭。在 previousPage 函数中,添加“$.trigger('closeParent');”发出关闭 window 的信号。然后在调用 window(引用小部件的地方)中添加类似“$..on('closeParent', );”的内容然后关闭函数中的window。我希望这是有道理的。
设置回调应该可以解决您的问题。
你的 "widget.js" :
var previousPageCallback;
function previousPage() {
if(previousPageCallback) previousPageCallback();
}
module.exports = {
previousPageCallback : previousPageCallback
};
你的"previousWindow.xml"
<Window>
<Widget id="myWidget" src="<whateverYourWidgetNameIs>"/>
</Window>
您的 "previousWindow.js"(您使用小部件的 window)
$.myWidget.previousPageCallback = $.previousWindow.close();
谢谢大家的欢呼
我有一个包含后退按钮的小部件,单击该后退按钮时我想关闭具有该小部件的 window(父 window)。 这是我的 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
}
我尝试在小部件中发送带有 window 名称的自定义 属性,如下所示:
Alloy.createController('windowName').close();
但是它说window没有打开
您无法在小部件中创建控制器并尝试关闭它,您正在创建 window 的新实例,而不是引用调用控制器。我会使用消息传递来执行关闭。在 previousPage 函数中,添加“$.trigger('closeParent');”发出关闭 window 的信号。然后在调用 window(引用小部件的地方)中添加类似“$..on('closeParent', );”的内容然后关闭函数中的window。我希望这是有道理的。
设置回调应该可以解决您的问题。
你的 "widget.js" :
var previousPageCallback;
function previousPage() {
if(previousPageCallback) previousPageCallback();
}
module.exports = {
previousPageCallback : previousPageCallback
};
你的"previousWindow.xml"
<Window>
<Widget id="myWidget" src="<whateverYourWidgetNameIs>"/>
</Window>
您的 "previousWindow.js"(您使用小部件的 window)
$.myWidget.previousPageCallback = $.previousWindow.close();
谢谢大家的欢呼