Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
7197 Lượt xem

I am trying to create a widget for my custom module. I can't seem to get the js to see the qweb template. Here are the files


services/static/src/js/signature.js

odoo.debug = true;
odoo.define('services.signature', function (require) {
"use strict";
var core = require('web.core');
  var Widget = require('web.Widget');
  console.log("working");
  var Signature = Widget.extend({
   template: "sigPad",
   events: {
      // events binding example
      'click .get-signature': function(){
   console.log("Handle click has been clicked");
   }
    },
   init: function(parent){
   this._super(parent);
   console.log("The signaure has been initiated");
   },
   start: function(){
   var sup = this._super();
   console.log("The start function has launched");
   }
  }); 
  core.form_widget_registry.add('signaturePad', Signature);
});


services/static/src/xml/signature.xml
<?xml version="1.0" encoding="UTF-8" ?>
<templates id="template" xml:space="preserve">
<t t-name="sigPad">
 <div class="panel panel-default mt16 mb0 " id="drawsign">
  <p>This is the signature area</p>
 </div>
</t>
</templates>


views/resources.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
  <template id="sws_services_signature_backend" name="sws_services_signature assets" inherit_id="web.assets_backend">
      <xpath expr="." position="inside">
        <script type="text/javascript" src="/services/static/src/js/socket.io-client.js"></script>
        <script type="text/javascript" src="/services/static/src/js/signature.js"></script>
      </xpath>
  </template>
</odoo>

calling it like this inside a form xml

views/views.xml
.....
<field name="signature" widget="signaturePad"/>
......


__manifest__.py
..............
    'depends': ['base','web'],
    # always loaded
    'data': [
        'views/views.xml',
        'views/service_workflow.xml',
        'views/resources.xml',
    ],
    'js': [
      'static/src/js/signature.js'],
    'qweb': [
      'static/src/xml/signature.xml', ]
...........

   

No matter what I do I get this error:

TypeError: w.set_input_id is not a function. (In 'w.set_input_id($label.attr("for"))', 'w.set_input_id' is undefined)


or If I remove core.form_widget_registry.add('signaturePad', Signature);

and just instantiate it with new and use appendtTo() it tells me it can't find the qweb template. Even though I can inspect the browser and verify that the template is there.


Any idea on how to get this working?



Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 3 21
3742
0
thg 8 20
3201
0
thg 2 18
3471
0
thg 9 17
4311
3
thg 8 17
9154