事件无法从nativelaycript中的Gridlayout获取对象

时间:2016-09-21 08:27:10

标签: javascript 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。 看起来我没有获取单元格对象,因为我点击了网格,或者,在加载的方法执行后它不存在于页面上的objetcs。 我是以错误的方式使用事件上的方法还是陷入了JS技巧?

1 个答案:

答案 0 :(得分:2)

您需要将args参数传递给函数,以便它能够识别您刚刚点击的对象,具体取决于打印出该对象的ID:

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