Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    web js extend

    Odoo 开发与实施交流
    4
    11
    1906
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • H
      hui 最后由 hui 编辑

      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
        guwenfengvip163.com 最后由 编辑

        @hui 在 web js extend 中说:

        extend

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

        把extend 换成include试试

        H 1 条回复 最后回复 回复 引用 0
        • H
          hui @guwenfengvip163.com 最后由 编辑

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

          1 条回复 最后回复 回复 引用 0
          • G
            guwenfengvip163.com 最后由 编辑

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

            H 1 条回复 最后回复 回复 引用 0
            • H
              hui @guwenfengvip163.com 最后由 hui 编辑

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

              1 条回复 最后回复 回复 引用 0
              • G
                guwenfengvip163.com 最后由 digitalsatori 编辑

                @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
                • 鲍
                  鲍永道 最后由 鲍永道 编辑

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

                  1 条回复 最后回复 回复 引用 0
                  • H
                    hui @guwenfengvip163.com 最后由 编辑

                    @guwenfengvip163-com
                    没反应的

                    H W 2 条回复 最后回复 回复 引用 0
                    • H
                      hui @hui 最后由 hui 编辑

                      @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
                        hui @hui 最后由 编辑

                        @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
                          Wangliun @hui 最后由 编辑

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

                          1 条回复 最后回复 回复 引用 0
                          • First post
                            Last post