0
안녕하세요이 질문은 내 자신의 대답과 관련이있다 here 첫 번째 데이터베이스 레코드 개체가 양식보기에 표시되면 위젯이 한 번만 실행되지만 다른 레코드로 변경하면보기가 실제 기록. 나는 그것이 '시작'에서 모든 코드를 실행하기 때문에 그것이라고 생각하지만, 어떻게 그리고 어디서 코드를 작성했는지는 모른다. 다시odoo, 모든 db 레코드 형식보기에서 위젯을 다시로드하는 방법?
코드 :에서
(function (instance) {
var _t = instance.web._t,
_lt = instance.web._lt;
var QWeb = instance.web.qweb;
openerp.chess_base = function (instance, local) {
local.ShowBoard = instance.web.form.FormWidget.extend({
start: function() {
this.$el.append('<div id="board" style="width: 300px">BOARD GOES HERE</div>');
this.show_board();
},
show_board: function() {
var Game = new instance.web.Model("chess.game"),
record_id = this.field_manager.datarecord.id,
record_name = this.field_manager.datarecord.name,
self = this;
self.el_board = self.$('#board');
Game.query(['pgn']).filter([['id', '=', record_id], ['name', '=', record_name]]).all().then(function (data) {
console.log(data);
self.cfg = {
position: data[0].pgn,
orientation: 'white',
pieceTheme: '/chess_base/static/img/chesspieces/wikipedia/{piece}.png'
};
ChessBoard(self.el_board, self.cfg);
});
}
});
instance.web.form.custom_widgets.add('board', 'instance.chess_base.ShowBoard');
}
})(openerp);
나는 이와 같은 문제가 과거에 발생했습니다. 나는 정말로 감명을받은 해결책을 찾지 못했다. 그러나 브라우저의 '해시'에서 변경 사항을 바인딩하고 이벤트를 처리 한 다음 show_board 함수가 실행되면 다시 실행하는지 확인할 수 있습니다. 코드를 찾으면 코드를 게시하십시오. 또는 나보다 훨씬 똑똑한 사람이 답을 게시 할 수 있기를 바랍니다. –