Titanium - 从控制器到视图的触发器
Titanium - Trigger from controller to a view
我有一个 widget.js 和一个 table 并且在他的 headerView 中我有一个控制器视图。代码:
var table = Ti.UI.createTableView({
id: ('table' + i),
data: tableData,
separatorStyle: OS_ANDROID ? Ti.UI.TABLE_VIEW_SEPARATOR_STYLE_NONE : Ti.UI.iPhone.TableViewSeparatorStyle.NONE,
headerView: Alloy.createController("Principal/Componentes/LocalizacionRow", {parent: $.board}).getView()
});
我想使用 $.trigger 将事件从 LocalizacionRow 传递到 widget.js,但它不起作用。
我的代码:
LocalizacionRow.js
if(!e.cancel){
$.localizacion.text = e.data[0].value;
$.trigger('recargar');
Ti.API.info("## Periódico: " + Ti.App.Properties.getString('media') + " " + $.localizacion.text);
}
widget.js
var header = table.getHeaderView();
header.on('recargar', function(e){
Ti.API.debug("--- Recargar");
});
“--- Recargar”从未显示。我做错了什么?
我在这里看到了这段代码:http://www.tidev.io/2014/09/10/the-case-against-ti-app-fireevent-2/
这里:https://wiki.appcelerator.org/display/guides2/Controller+events
您必须在控制器中而不是在视图中触发事件,试试这个:
var controller = Alloy.createController("Principal/Componentes/LocalizacionRow", {parent: $.board});
var table = Ti.UI.createTableView({
id: ('table' + i),
data: tableData,
separatorStyle: OS_ANDROID ?,
headerController : controller,
headerView: controller.getView();
});
var header = table.headerController;
header.on('recargar', function(e){
Ti.API.debug("--- Recargar");
});
如果要接收事件,必须向 LocalizacionRow
控制器添加触发器,如下所示:
var LocalizacionRowController = Alloy.createController("Principal/Componentes/LocalizacionRow", {parent: $.board});
LocalizacionRowController.on('recargar', function(e){
Ti.API.debug("--- Recargar");
});
var table = Ti.UI.createTableView({
id: ('table' + i),
data: tableData,
separatorStyle: OS_ANDROID ? Ti.UI.TABLE_VIEW_SEPARATOR_STYLE_NONE : Ti.UI.iPhone.TableViewSeparatorStyle.NONE,
headerView: LocalizacionRowController.getView()
});
我有一个 widget.js 和一个 table 并且在他的 headerView 中我有一个控制器视图。代码:
var table = Ti.UI.createTableView({
id: ('table' + i),
data: tableData,
separatorStyle: OS_ANDROID ? Ti.UI.TABLE_VIEW_SEPARATOR_STYLE_NONE : Ti.UI.iPhone.TableViewSeparatorStyle.NONE,
headerView: Alloy.createController("Principal/Componentes/LocalizacionRow", {parent: $.board}).getView()
});
我想使用 $.trigger 将事件从 LocalizacionRow 传递到 widget.js,但它不起作用。
我的代码:
LocalizacionRow.js
if(!e.cancel){
$.localizacion.text = e.data[0].value;
$.trigger('recargar');
Ti.API.info("## Periódico: " + Ti.App.Properties.getString('media') + " " + $.localizacion.text);
}
widget.js
var header = table.getHeaderView();
header.on('recargar', function(e){
Ti.API.debug("--- Recargar");
});
“--- Recargar”从未显示。我做错了什么?
我在这里看到了这段代码:http://www.tidev.io/2014/09/10/the-case-against-ti-app-fireevent-2/
这里:https://wiki.appcelerator.org/display/guides2/Controller+events
您必须在控制器中而不是在视图中触发事件,试试这个:
var controller = Alloy.createController("Principal/Componentes/LocalizacionRow", {parent: $.board});
var table = Ti.UI.createTableView({
id: ('table' + i),
data: tableData,
separatorStyle: OS_ANDROID ?,
headerController : controller,
headerView: controller.getView();
});
var header = table.headerController;
header.on('recargar', function(e){
Ti.API.debug("--- Recargar");
});
如果要接收事件,必须向 LocalizacionRow
控制器添加触发器,如下所示:
var LocalizacionRowController = Alloy.createController("Principal/Componentes/LocalizacionRow", {parent: $.board});
LocalizacionRowController.on('recargar', function(e){
Ti.API.debug("--- Recargar");
});
var table = Ti.UI.createTableView({
id: ('table' + i),
data: tableData,
separatorStyle: OS_ANDROID ? Ti.UI.TABLE_VIEW_SEPARATOR_STYLE_NONE : Ti.UI.iPhone.TableViewSeparatorStyle.NONE,
headerView: LocalizacionRowController.getView()
});