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

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

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. odoo12 widget appendTo Dom元素的问题

odoo12 widget appendTo Dom元素的问题

已定时 已固定 已锁定 已移动 Odoo 新手求助
4 帖子 2 发布者 1.7k 浏览 2 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 小 离线
    小 离线
    小狮子
    发表于 最后由 编辑
    #1

    我最跟着官方教程做demo的时候遇到了一个问题想请教下各位大神——
    Widget实例化以后 尝试appendTo模板页的一个dom元素中,打开页面时报了一个错误(如图)!
    1562643795(1).png

    js代码:

    odoo.define('todo_Widget_Conuter', function (require) {
        "use strict";
    
        //var widgetRegistry = require('web.widget_registry');
        var Widget = require('web.Widget');
    
        var Counter = Widget.extend({
            template: 'todo.counterBtnTemp',
            xmlDependencies: ['/todo/static/src/xml/widgetTemplate.xml'],
            events: {
                'click button': '_onClick',
            },
            init: function (parent) {//value
                this._super(parent);
                this.count = 1;
            },
            _onClick: function () {
                this.count++;
                this.$('.val').text(this.count);
            },
            willStart:function(){
                console.log('this is willStart');
            },
            start:function(){
                console.log('this is start');
                return this._super();
            },
        });
    
    // Create the instance
    var counter = new Counter(this);
    // Render and insert into DOM
    counter.appendTo($('.some-div'));
    
    return Counter;
    });
    

    模板代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <templates id="template" xml:space="preserve">
        <t t-name="todo.counterBtnTemp">
            <span class="val"><t t-esc="widget.count"/></span>
            <button>Increment</button>>
        </t>
    </templates>
    

    视图代码:

    <?xml version="1.0" encoding="utf-8"?>
    <odoo>
        <template id="assets_common" inherit_id="web.assets_common" name="todo Backend Assets (used in backend interface)">
            <xpath expr="//script[last()]" position="after">
                <script type="text/javascript" src="/todo/static/src/js/jsreference.js"></script>
            </xpath>
            <xpath expr="//script[last()]" position="after">
                <script type="text/javascript">
                    
                </script>
            </xpath>
        </template>
        <template id="todosite" name="Todo Site Template">
            <t t-call="website.layout">
                <div class="some-div"></div>
            </t>
        </template>
    </odoo>
    
    1 条回复 最后回复
    0
    • 鲍 离线
      鲍 离线
      鲍永道
      发表于 最后由 编辑
      #2

      你这个本身的实现的思路和具体的js写法都不对,你还是表达清楚你要具体实现什么东西?

      小 1 条回复 最后回复
      0
      • 鲍 鲍永道

        你这个本身的实现的思路和具体的js写法都不对,你还是表达清楚你要具体实现什么东西?

        小 离线
        小 离线
        小狮子
        发表于 最后由 编辑
        #3

        @鲍永道 是这样 我是跟着odoo12 官方文档 javascript reference那一篇关于widget用法的官方示例做的,原文就是简单地给了些关键代码,我理解的它想实现的就是在class='some-div' 这个div中插入自定义的widget模板(这个模板就是一个span和一个button,js赋能 点btn后 span内容就会变化)。不知这样是否能够描述清楚。

        1 条回复 最后回复
        0
        • 鲍 离线
          鲍 离线
          鲍永道
          发表于 最后由 编辑
          #4

          这个直接可extend某个已经存在的widget,也不用直接wxtend widget,另外,extend写好后,需要在注册在widget中,后面才能实际使用。

          1 条回复 最后回复
          0

          你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

          厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

          有了你的建议,这篇帖子会更精彩哦 💗

          注册 登录
          回复
          • 在新帖中回复
          登录后回复
          • 从旧到新
          • 从新到旧
          • 最多赞同


          • 登录

          • 没有帐号? 注册

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