在 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);
});
我的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);
});