跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. odoo12 widget的用法

odoo12 widget的用法

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

    @las_aves

    继承的widget,是不是这个是必须的啊(我也不是很懂)

    init: function(parent) {
                this._super.apply(this, arguments); 
            },
    
    
    1 条回复 最后回复
    0
    • L 离线
      L 离线
      las_aves
      写于 最后由 编辑
      #3
      此回复已被删除!
      1 条回复 最后回复
      0
      • L 离线
        L 离线
        l732893879
        写于 最后由 编辑
        #4

        form_custom_registry没添加,这样写没法调起吧
        console.log("1") 只能表示这个js文件被加载了

        L 1 条回复 最后回复
        0
        • L 离线
          L 离线
          las_aves
          在 回复了 l732893879 最后由 编辑
          #5

          @l732893879
          您好, 我在项目中全局搜索没有发现您提到的 form_custom_registry, 请问这个是12的吗

          L 1 条回复 最后回复
          0
          • 鲍 离线
            鲍 离线
            鲍永道
            写于 最后由 编辑
            #6
            var registry = require('web.field_registry');
            然后对应注册添加:
            // Basic fields
            registry
                .add('abstract', AbstractField)
                .add('input', basic_fields.InputField)
                .add('integer', basic_fields.FieldInteger)
                .add('boolean', basic_fields.FieldBoolean)
                .add('date', basic_fields.FieldDate)
                .add('datetime', basic_fields.FieldDateTime)
                .add('domain', basic_fields.FieldDomain)
                .add('text', basic_fields.FieldText)
                .add('html', basic_fields.FieldText)
                .add('float', basic_fields.FieldFloat)
                .add('char', basic_fields.FieldChar)
                .add('link_button', basic_fields.LinkButton)
                .add('handle', basic_fields.HandleWidget)
                .add('email', basic_fields.FieldEmail)
                .add('phone', basic_fields.FieldPhone)
                .add('url', basic_fields.UrlWidget)
                .add('CopyClipboardText', basic_fields.TextCopyClipboard)
                .add('CopyClipboardChar', basic_fields.CharCopyClipboard)
                .add('image', basic_fields.FieldBinaryImage)
                .add('binary', basic_fields.FieldBinaryFile)
                .add('pdf_viewer', basic_fields.FieldPdfViewer)
                .add('monetary', basic_fields.FieldMonetary)
                .add('percentage', basic_fields.FieldPercentage)
                .add('priority', basic_fields.PriorityWidget)
                .add('attachment_image', basic_fields.AttachmentImage)
                .add('label_selection', basic_fields.LabelSelection)
                .add('state_selection', basic_fields.StateSelectionWidget)
                .add('kanban_state_selection', basic_fields.StateSelectionWidget)
                .add('boolean_favorite', basic_fields.FavoriteWidget)
                .add('boolean_button', basic_fields.FieldBooleanButton)
                .add('boolean_toggle', basic_fields.BooleanToggle)
                .add('statinfo', basic_fields.StatInfo)
                .add('percentpie', basic_fields.FieldPercentPie)
                .add('float_time', basic_fields.FieldFloatTime)
                .add('float_factor', basic_fields.FieldFloatFactor)
                .add('float_toggle', basic_fields.FieldFloatToggle)
                .add('progressbar', basic_fields.FieldProgressBar)
                .add('toggle_button', basic_fields.FieldToggleBoolean)
                .add('dashboard_graph', basic_fields.JournalDashboardGraph)
                .add('ace', basic_fields.AceEditor);
            
            L 2 条回复 最后回复
            0
            • L 离线
              L 离线
              l732893879
              在 回复了 las_aves 最后由 编辑
              #7

              @las_aves sorry这是10的,可能到12换写法了

              1 条回复 最后回复
              0
              • L 离线
                L 离线
                las_aves
                在 回复了 鲍永道 最后由 编辑
                #8
                此回复已被删除!
                1 条回复 最后回复
                0
                • L 离线
                  L 离线
                  las_aves
                  在 回复了 鲍永道 最后由 编辑
                  #9

                  @鲍永道

                  注册之后, field的name属性消失了

                  odoo.define("account.upload_test", function(require){
                  "use strict"
                  
                  require('web.dom_ready');
                  var field_registry = require('web.field_registry');
                  var basic_field = require('web.basic_fields');
                  var Field_Text = basic_field.FieldText;
                  
                      var Imgs = Field_Text.extend({
                          start : function(){
                              var info = JSON.parse(this.value);
                              console.log(info);
                          },
                      });
                  
                      field_registry.add('test_text', Imgs);
                      return Imgs;
                  });
                  

                  view code

                  <field name="x_product_video" class="test_test" id="imageList" widget="test_text"/>
                  

                  加载之后的页面, name属性没有了, JS中的代码可以正常执行, 请问是哪一步有问题

                  加载后渲染的代码

                  <span class="o_field_text o_field_empty test_test" data-original-title="" title=""></span>
                  
                  1 条回复 最后回复
                  0
                  • 鲍 离线
                    鲍 离线
                    鲍永道
                    写于 最后由 编辑
                    #10

                    js代码写错了,你现在的写法只是用于调试,没有自己实现widget的逻辑,另外,extend的start的方法也不是你这么写的,后面需要return this._super();

                    L 1 条回复 最后回复
                    0
                    • L 离线
                      L 离线
                      las_aves
                      在 回复了 鲍永道 最后由 编辑
                      #11

                      @鲍永道
                      谢谢, 按照您的方法我已经成功处理了错误代码。
                      但当我在start方法里尝试用JQ.html() 方法向一个div中插入元素时并没有成功,尝试获取这个div也是空的

                      start : function(){
                                  var videos = this.record.data.x_product_video;
                                  var arr = videos.split(";");
                                  var html = "";
                                  for(var i = 0; i < arr.length; i++){
                                     //add html 
                                      html += "";
                      
                                  }
                                  $("#preview").html(html);
                                  console.log(document.getElementById("preview"));
                                  return this._super();
                              },
                      
                      1 条回复 最后回复
                      0
                      • 鲍 离线
                        鲍 离线
                        鲍永道
                        写于 最后由 编辑
                        #12

                        生命周期问题,还没有jq对象,所以不能html。

                        L 1 条回复 最后回复
                        0
                        • L 离线
                          L 离线
                          las_aves
                          在 回复了 鲍永道 最后由 编辑
                          #13

                          @鲍永道
                          那么我应该如何正确的处理

                          1 条回复 最后回复
                          0
                          • 鲍 离线
                            鲍 离线
                            鲍永道
                            写于 最后由 编辑
                            #14

                            可以在其他方法里面写,也可以设置延时一下。

                            L 1 条回复 最后回复
                            0
                            • L 离线
                              L 离线
                              las_aves
                              在 回复了 鲍永道 最后由 编辑
                              #15

                              @鲍永道
                              谢谢, 我最后用延时去处理了。
                              不胜感激!

                              鲍 1 条回复 最后回复
                              0
                              • 鲍 离线
                                鲍 离线
                                鲍永道
                                在 回复了 las_aves 最后由 编辑
                                #16

                                @las_aves不用客气,多交流。15068334016也可以加微信聊。

                                1 条回复 最后回复
                                0

                                • 登录

                                • 没有帐号? 注册

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