2016-11-08 55 views
1

嗨我被困在窗體視圖上呈現自定義html內容的構件創建,我不知道如何遵循。這裏是我的代碼odoo創建自定義後端表單構件來呈現html視圖

JS:

(function (instance) { 
    var _t = instance.web._t, 
     _lt = instance.web._lt; 
    var QWeb = instance.web.qweb; 

    console.log('hi..........'); // Custome message to dispaly on console 
    openerp.my_module = function (instance, local) { 
     console.log(instance); 
     instance.web.form.widgets.add('my_module.home', 'instance.my_module.Home'); 
     instance.my_module.Home = instance.web.form.FormView.extend({ 
      template: 'my_template', 
      init: function (view, code) { 
       console.log("::: INIT"); 
      }, 
      start: function() { 
       console.log("::: START"); 
      } 
     }); 

    } 
})(openerp); 

XML模板

<?xml version="1.0" encoding="UTF-8"?> 
    <templates id="template" xml:space="preserve"> 
     <t t-name="my_template"> 
      <div> 
       Template content 
      </div> 
     </t> 
    </templates> 

此時只有在終端的'hi..........'和對象實例顯示,但從來沒有運行部件碼。所以我的問題是。如何使用它的形式配置,如果i'm失去了一些東西在這裏

<record id="view_form_my_module" model="ir.ui.view"> 
     <field name="name">My Module</field> 
     <field name="model">my.module</field> 
     <field name="arch" type="xml"> 
      <form> 
       <sheet> 
        **HOW TO ISE IT HERE** 
       </sheet> 
      </form> 
     </field> 
    </record> 

回答

2

它看起來像你對我可能真的要使用FormWidget而不是擴展FormView。我不是JavaScript擴展的專家。但是,如果您按照The Form View Custom Widgets找到的文檔here,您可能會發現更容易完成您要做的事情。使用<widget/>標籤,也可以輕鬆地將窗口小部件放在任何窗體視圖中。

local.YourWidgetClassName = instance.web.form.FormWidget.extend({ 
    start: function() { 
     this._super(); 
     this.display_html(); 
    }, 
    display_html: function() { 
     this.$el.html(QWeb.render("your_qweb_template", { 
      "arg1": "Hello", 
      "arg2": "World", 
     })); 
    } 
}); 

instance.web.form.custom_widgets.add('widget_tag_name', 'instance.your_addon_name.YourWidgetClassName'); 

現在在你身邊qweb我會這樣稱呼它。

<widget type="widget_tag_name"></widget> 
當我使用<插件類型= 「my_template」/>標記odoo trwos此錯誤
+0

'web.assets_backend.js:3600未捕獲的類型錯誤:obj不是一個constructor' – efirvida

+0

我希望能更有幫助。我把文檔中的內容粘貼到我的答案中,並作了一些調整(例如)。似乎它討厭你的'start'函數的定義。如果這不起作用,我會在稍後提供一個完整的工作示例。 –

+0

嘗試從文檔中的FormWidget的香草修改版開始。一旦你將插件名稱和類名替換爲適合你的插件的東西。然後用真實的內容充實它。如果你的qweb說'

HELLO WORLD

',你可以讓它出現在屏幕上,那麼你就可以開始前進。 –