0

我有一个带有表格的 widget.js,在他的 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);
        }

小部件.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

4

2 回答 2

2

如果要接收事件,则必须向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()
});
于 2016-04-29T05:46:11.927 回答
-1

你必须在控制器中触发事件而不是在视图中,试试这个:

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"); 
});
于 2016-04-28T11:31:34.170 回答