2016-09-21 23 views
1

我的js代碼on事件不能得到從GridLayout的對象,在nativescript

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。 我是以錯誤的方式使用on事件方法還是陷入JS技巧?

回答

2

您需要將args PARAM傳遞給函數,這樣它會意識到你只是挖什麼對象,基於該打印出該對象的ID:

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

你讓我:D權利之前我想發帖 –

+0

哇,我很幸運:D –

+0

它的工作原理,謝謝! ) - :@Dinh Le – 9527