跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. web js extend

web js extend

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
11 帖子 4 发布者 2.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • H 离线
    H 离线
    hui
    写于 最后由 hui 编辑
    #1

    1、什么时候需要web.WebClient,这个作用是什么?

    2、在web.core中返回的json数据中会有这些键:比如one2many_view_registry,list_widget_registry,别的js可以给里面add数据,比如core.one2many_view_registry.add('list', One2ManyListView)。
    这个是添加后有什么效果变化,这些东西又怎么使用?

    3、我formView.extend()后没有alert出东西,哪里有问题了?

    我是这样理解的:
    1、odoo中的tree,list视图实际是不是没有html,都是通过js写出来的啊,kanban视图应该是通过qweb的template写出来的吧;
    如果我想要修改某个视图的布局,增加元素,都是要写js实现的吧。

    2、至于什么是widget,比较模糊。

    odoo.define('sps_product', function(require) {
        'use strict';
    
        var Client = require('web.WebClient');
        var Model = require('web.DataModel');
        var Core = require('web.core');
        // add
        var formView = require('web.FormView');
        var formRelational = require('web.form_relational');
        var ListView = require('web.ListView');
        var o2m = Core.one2many_view_registry;
        alert('core o2m', o2m);
    
        formView.extend({
            init:function(parent){
                this._super(parent);
                alert('coming11');
                this.$el.append("<div>We are so happy to see you again in this menu!</div>");
                alert('append after---');
    //            var self = this;
    //            this._super.apply(this, arguments);
    //            $query = $el.html('<input type="text" placeholder="Search"/>');
    //            alert('add item===', $query);
    //            this.$('div.o_cp_right').before($query);
            },
        });
    
    1 条回复 最后回复
    0
    • G 离线
      G 离线
      guwenfengvip163.com
      写于 最后由 编辑
      #2

      @hui 在 web js extend 中说:

      extend

      继承重写用 include,
      继承复制用 extend

      把extend 换成include试试

      H 1 条回复 最后回复
      0
      • H 离线
        H 离线
        hui
        在 回复了 guwenfengvip163.com 最后由 编辑
        #3

        @guwenfengvip163-com
        换成include页不行的,感觉inlude里面的没有进去啊,都没有alert的

        1 条回复 最后回复
        0
        • G 离线
          G 离线
          guwenfengvip163.com
          写于 最后由 编辑
          #4

          你的JS 进去了么? alert('core o2m', o2m);  这一句能弹出来不

          H 1 条回复 最后回复
          0
          • H 离线
            H 离线
            hui
            在 回复了 guwenfengvip163.com 最后由 hui 编辑
            #5

            @guwenfengvip163-com
            alert('core o2m', o2m);这一句alert出来了,是include里面的没有alert出来

            1 条回复 最后回复
            0
            • G 离线
              G 离线
              guwenfengvip163.com
              写于 最后由 digitalsatori 编辑
              #6

              @hui

              var FormView = require('web.FormView');
              
              FormView.include({
                  defaults: _.extend({}, FormView.prototype.defaults, {
                      disable_autofocus: config.device.touch,
                  }),
                  init: function () {
                      this._super.apply(this, arguments);
                      if (config.device.size_class <= config.device.SIZES.XS) {
                          this.rendering_engine = new FormRenderingEngineMobile(this);
                      }
                  },
              });
              
              H 1 条回复 最后回复
              0
              • 鲍 离线
                鲍 离线
                鲍永道
                写于 最后由 鲍永道 编辑
                #7

                可以远程帮你看下,这方面的js扩展和自定义我写过很多了。
                qq:601939654

                1 条回复 最后回复
                0
                • H 离线
                  H 离线
                  hui
                  在 回复了 guwenfengvip163.com 最后由 编辑
                  #8

                  @guwenfengvip163-com
                  没反应的

                  H W 2 条回复 最后回复
                  0
                  • H 离线
                    H 离线
                    hui
                    在 回复了 hui 最后由 hui 编辑
                    #9

                    @guwenfengvip163-com @鲍永道

                    这是@鲍永道 帮忙写的,目前可以达到的效果是在form视图中可以显示出跟list视图一样的search视图。

                    其他问题:在form视图中输入需要搜索的字段的值后也可以像在list视图中出现下拉式的选择搜索哪个字段,但是搜索后不会出现结果,需要点击面包屑导航的返回去才能看见结果。(也就是搜索后返回的还是等同于在list视图搜索的结果)

                    可改进:我觉得效果应该是搜索后直接跳转到对应的form视图。具体修改涉及到哪里的方法我就不清楚了。

                    /**
                     * @author taony
                     * @deprecated 用于odoo form可以search搜索
                     * @since 
                     */
                    odoo.define('web.taony_form_search', function (require) {
                        'use strict';
                    
                        var ControlPanel = require('web.ControlPanel');
                        var Bus = require('web.Bus');
                        var data = require('web.data');
                        var Widget = require('web.Widget');
                    
                        ControlPanel.include({
                            _update_search_view: function (searchview, is_hidden) {
                                var self = this;
                                if (searchview) {
                                    searchview.$buttons = this.nodes.$searchview_buttons;
                                    searchview.toggle_visibility(true);
                                    self.nodes.$breadcrumbs.width('50%');
                                }
                    
                                this.nodes.$searchview.toggle(true);
                                this.$el.toggleClass('o_breadcrumb_full', !!is_hidden);
                            }
                        });
                    });
                    
                    
                    H 1 条回复 最后回复
                    0
                    • H 离线
                      H 离线
                      hui
                      在 回复了 hui 最后由 编辑
                      #10

                      @hui
                      我根据我的需要修改了一点点,让这个form视图中的search框只在我需要的model中显示出来,其他的model就不显示了。

                      有个疑问:在浏览器中查看控制台日志的时候会发现,进入list视图的时候,searchview是有值的,也就可以找到正在操作的model,但是当点击某一个product进入对应的form视图的时候,会先出现searchview的值为undefined的,然后出现searchview的值又回来的现象。我觉得应该跟update的方法有关,但是关键点在哪个,这个就没看懂了。

                      高手在哪里,出来指点指点。

                      代码如下:

                      /**
                       * @author taony
                       * @deprecated 用于odoo form可以search搜索
                       * @since 
                       */
                      odoo.define('web.taony_form_search', function (require) {
                          'use strict';
                      
                          var ControlPanel = require('web.ControlPanel');
                          var Bus = require('web.Bus');
                          var data = require('web.data');
                          var Widget = require('web.Widget');
                      
                          ControlPanel.include({
                      
                              _update_search_view: function (searchview, is_hidden) {
                                  var self = this;
                                  if (searchview) {
                                      var model = searchview.model
                                      if ('product.template' == model){
                                          searchview.$buttons = this.nodes.$searchview_buttons;
                                          searchview.toggle_visibility(true);
                                          self.nodes.$breadcrumbs.width('50%');
                                          }
                                  }
                                  this.nodes.$searchview.toggle(true);
                                  this.$el.toggleClass('o_breadcrumb_full', !!is_hidden);
                              }
                          });
                      });
                      
                      1 条回复 最后回复
                      0
                      • W 离线
                        W 离线
                        Wangliun
                        在 回复了 hui 最后由 编辑
                        #11

                        @hui 请问在formView.extend中alert('append after---');不执行的原因是什么?

                        1 条回复 最后回复
                        0

                        • 登录

                        • 没有帐号? 注册

                        • 登录或注册以进行搜索。
                        • 第一个帖子
                          最后一个帖子
                        0
                        • 版块
                        • 标签
                        • 热门
                        • 用户
                        • 群组