2013-06-08 3 views
0

Я использую jcanvas (http://calebevans.me/projects/jcanvas/) для моего учебного проекта javascript. У меня есть следующий код:javascript: доступ к родительскому объекту из прослушивателя событий в методе draw из jcanvas

var Board = function($element){ 
    this.place_piece = function(piece){ 
     this.board[piece.position[0]][piece.position[1]] = piece; 
     $element.drawImage({ 
       source: piece.image, 
       draggable: true, 
       layer: true, 
       x: this.get_coordinates_by_cell(piece.position)[0], 
       y: this.get_coordinates_by_cell(piece.position)[1], 
       dragstop: function(layer){ 
       console.log($this) 
       console.log(layer) 
       } 
      }); 
} 

Мне нужно получить доступ к методам родительского объекта Board внутри функции dragstop. Но когда я называю $ этой переменной, я получаю холст ... не сам совет. Там что-нибудь есть?

ответ

1

При входе в конструктор вашего Совета назначьте его локальной переменной (self), чтобы другие функции, определенные в той же области, могли иметь к ней доступ.

Что-то вроде следующего будет работать:

var Board = function($element){ 
    var self = this; 
    this.place_piece = function(piece){ 
     this.board[piece.position[0]][piece.position[1]] = piece; 
     $element.drawImage({ 
       source: piece.image, 
       draggable: true, 
       layer: true, 
       x: this.get_coordinates_by_cell(piece.position)[0], 
       y: this.get_coordinates_by_cell(piece.position)[1], 
       dragstop: function(layer){ 
       console.log(self) 
       console.log($this) 
       console.log(layer) 
       } 
      }); 
} 
Смежные вопросы