在 nativescript 中,On-event 无法从 Gridlayout 获取对象

On-event cannot get the object from the Gridlayout ,in nativescript

我的js代码

var gridLayout = page.getViewById("grid9");
var num;
for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
        num = i * 3 + j;
        //build the grids
        var cell = new StackLayout();
        cell.id = "GD" + num;
        cell.className = "grid";
        cell.on("tap", function () {
            alert(this.id);//  <============problem is here!
        });


        var img = new ImageModule.Image();
        img.src = "~/img/u.png";
        cell.addChild(img);

        GridLayout.setRow(cell, i);
        GridLayout.setColumn(cell, j);
        gridLayout.addChild(cell);
    }
}

该应用程序向我显示了正确的 9 张图片,但当我触摸到每一条线时都会提醒我 undefined。 将警报方法参数 this.id 更改为 cell.id 后,如果我点击网格 - 每个网格,它会显示 GD8。 看起来我在点击网格时没有得到单元格对象,或者,加载方法执行后页面上的对象不存在。 我是用错了 on-event 方法还是中了 JS 把戏?

您需要将 args 参数传递给该函数,以便它根据打印出该对象的 ID 来识别您刚刚点击的对象:

cell.on("tap", function(args) {
    alert(args.object.id);
});