Передача изменений: атрибуты через объекты и представления в точке продажи для Odoo 12 на основе Backbone - PullRequest
0 голосов
/ 26 апреля 2020

Я работаю в модуле для Odoo 12, в частности в системе POS, основанной на магистрали.

Можно взглянуть на код в [point_of_sale] (https://github.com/OCA/OCB/blob/12.0/addons/point_of_sale/static/src/js/

Существуют другие расширения для этого модуля, и я пытаюсь создать KDS (кухонную систему отображения). У меня есть версия KDS для Odoo 10, но этот модуль не точный, потому что он использует событие 'change' для рендеринга экрана на кухне. Это преобразуется в слишком много рендеринга. Я пытаюсь рендерить экран только после нажатия кнопки в главном Pos (в этом клике порядок сохраняется на сервере). ). Это делает изменение атрибута, и я связываю это и получаю его правильно, но триггер, который я запускаю позже, не сработал, и мое представление никогда не получит это. Оно запускается только когда я использую событие 'change', а не изменение атрибута event -> 'change: order_saved'

Я не знаю, почему событие 'change' прибывает в представление, но 'change: my_atribute' не приходит. Возможно для вложенной строки Учение о POS ??

Спасибо за avance, я немного расстроен и надеюсь найти решение.

var PosModelSuper = models.PosModel;
   models.PosModel = models.PosModel.extend({
       initialize: function(){
          var self = this;
          PosModelSuper.prototype.initialize.apply(this, arguments);

          this.get('orders').bind('change:order_saved', function(){
               console.log('received')--> console prints 'received'
                self.trigger('update:sended_to_kitchen')--> it never arrives to the view

          },this)

Но если я поменяю на:

var PosModelSuper = models.PosModel;
   models.PosModel = models.PosModel.extend({
       initialize: function(){
          var self = this;
          PosModelSuper.prototype.initialize.apply(this, arguments);


          this.get('orders').bind('change', function(){

        console.log('received')--> console prints 'received'
                self.trigger('update:sended_to_kitchen') --> it seems to be executed and received by the view in kitchen
          },this)

Кухня получает триггер. Это часть кода на экране кухни:

var KitchenScreenWidget = screens.ScreenWidget.extend({

    template : 'KitchenScreenWidget',

        show: function () {
            var self = this;
            this._super();
             /*Bind Triggers */
            this.pos.bind('update:sended_to_kitchen',  function(){
               console.log('enter in kitchen')
            },this)
        }

,

...