titanium - fire event - 监听器回调属于不受支持的类型:NSNull

时间:2015-01-15 09:24:00

标签: titanium

我正在编写一个模拟更改页面的简单脚本。

    var square = $.UI.create('View',{page : info, classes : ["box"]});

    square.addEventListener('click', function(e){
            Ti.API.info(JSON.stringify({title:e.source.page.title,page : e.source.page.id,menu:true});
            Ti.App.fireEvent('index:page',{title:e.source.page.title,page : e.source.page.id,menu:true});
        });

在我写的另一个控制器中

Ti.App.addEventListener('index:page',startup);
var startup = function(data){
    global_data = data;
    Alloy.Collections.menu.fetch();
    ...
    }

问题是当我点击“方形”按钮时,我得到了

Listener callback is of a non-supported type: NSNull

Ti.API.info(JSON.stringify({title:e.source.page.title,page : e.source.page.id,menu:true});行给了我{"title":"News","page":5,"menu":"true"}

不知道为什么。它看起来像我传递给启动函数的参数有空值,但输出并没有这么说。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

问题是声明调用的顺序:

var startup = function(data){
    global_data = data;
    Alloy.Collections.menu.fetch();
    ...
    };
Ti.App.addEventListener('index:page',startup);

而不是

Ti.App.addEventListener('index:page',startup);
var startup = function(data){
    global_data = data;
    Alloy.Collections.menu.fetch();
    ...
    };