Javascript 同时
Javascript Odoo
我正在尝试学习 odoo 的 javascript,众所周知,关于它的文档很少
首先,我终于可以用它的客户端操作创建一个视图模板,添加一个按钮来从 js 执行代码
JS :
odoo.define('js_client_view.ClientReportWidget', function (require) {
'use strict';
console.log("module loaded");
var AbstractAction = require('web.AbstractAction');
var Widget = require('web.Widget');
var core = require('web.core');
require('web.dom_ready');
var ajax = require('web.ajax');
var button = $('#mybutton');
var JsClientView = Widget.extend({
//contentTemplate: 'UploadDocumentMainMenu',
template: 'JsClientView',
events: {
'click .mybutton': '_onButton',
},
init: function(){
this._super.apply(this, arguments);
data =ajax.jsonRpc('/get_clients', 'call', {}).then(function(data) {
console.log("in data")
console.log(data)
return data
});
console.log(data)
},
_onButton: function(event) {
console.log("in On Button");
console.log(event);
ajax.jsonRpc('/get_clients', 'call', {}).then(function(data) {
console.log("in data")
console.log(data)
});
},
});
core.action_registry.add('js_client_view', JsClientView);
return JsClientView;
});
我的模板:
<templates xml:space="preserve" >
<t t-name="JsClientView" >
<div class="container o_mrp_bom_report_page">
<span class="o_report_heading text-left">
<br/>
<button type="button" class= "btn btn-secondary mybutton"
>Test </button>
<h1>Relevé de compte client</h1>
<strong>
<t >
<span>Tous les client</span>
</t>
</strong>
</span>
</t>
</templates>
以及 return 按钮功能信息的控制器:
class OdooControllers(http.Controller):
@http.route(['/get_clients'], type='json',auth='public', website=True)
def get_clients(self, **kw):
clients = http.request.env['hr.employee'].sudo().search([('department_id', '=',5)], limit=6)
c = []
for client in clients:
n = {
'name': client.name,
'id': client.id,
'certificate': client.certificate,
}
c.append(n)
return c
现在我想将此信息发送到模板并显示它
我该怎么做!
Odoo JS
是odoo的前端。因此,您不能编辑模板本身,因为您不在后端。 Odoo 使用经典的 客户端-服务器架构 因此,您的 JS 与服务器是分离的。
但是您可以通过访问正常的 jquery
和 JS
功能来编辑整个 DOM
树。你可以这样做:
在某处添加占位符div
:
<div id ="content">
</div>
用数据填充div
。
// On click find that div and inject content into it
ajax.jsonRpc('/get_clients', 'call', {}).then(function(data) {
$("#content").html("<p>Hello World<p/>");
// Later fill the content with data
});
您的示例可能根本不使用 JS
,但据我了解,您的目标是专门使用 JS
来显示该数据以供练习。这就是使用 JS
.
将数据从服务器注入 DOM
的方式
我正在尝试学习 odoo 的 javascript,众所周知,关于它的文档很少 首先,我终于可以用它的客户端操作创建一个视图模板,添加一个按钮来从 js 执行代码 JS :
odoo.define('js_client_view.ClientReportWidget', function (require) {
'use strict';
console.log("module loaded");
var AbstractAction = require('web.AbstractAction');
var Widget = require('web.Widget');
var core = require('web.core');
require('web.dom_ready');
var ajax = require('web.ajax');
var button = $('#mybutton');
var JsClientView = Widget.extend({
//contentTemplate: 'UploadDocumentMainMenu',
template: 'JsClientView',
events: {
'click .mybutton': '_onButton',
},
init: function(){
this._super.apply(this, arguments);
data =ajax.jsonRpc('/get_clients', 'call', {}).then(function(data) {
console.log("in data")
console.log(data)
return data
});
console.log(data)
},
_onButton: function(event) {
console.log("in On Button");
console.log(event);
ajax.jsonRpc('/get_clients', 'call', {}).then(function(data) {
console.log("in data")
console.log(data)
});
},
});
core.action_registry.add('js_client_view', JsClientView);
return JsClientView;
});
我的模板:
<templates xml:space="preserve" >
<t t-name="JsClientView" >
<div class="container o_mrp_bom_report_page">
<span class="o_report_heading text-left">
<br/>
<button type="button" class= "btn btn-secondary mybutton"
>Test </button>
<h1>Relevé de compte client</h1>
<strong>
<t >
<span>Tous les client</span>
</t>
</strong>
</span>
</t>
</templates>
以及 return 按钮功能信息的控制器:
class OdooControllers(http.Controller):
@http.route(['/get_clients'], type='json',auth='public', website=True)
def get_clients(self, **kw):
clients = http.request.env['hr.employee'].sudo().search([('department_id', '=',5)], limit=6)
c = []
for client in clients:
n = {
'name': client.name,
'id': client.id,
'certificate': client.certificate,
}
c.append(n)
return c
现在我想将此信息发送到模板并显示它 我该怎么做!
Odoo JS
是odoo的前端。因此,您不能编辑模板本身,因为您不在后端。 Odoo 使用经典的 客户端-服务器架构 因此,您的 JS 与服务器是分离的。
但是您可以通过访问正常的 jquery
和 JS
功能来编辑整个 DOM
树。你可以这样做:
在某处添加占位符div
:
<div id ="content">
</div>
用数据填充div
。
// On click find that div and inject content into it
ajax.jsonRpc('/get_clients', 'call', {}).then(function(data) {
$("#content").html("<p>Hello World<p/>");
// Later fill the content with data
});
您的示例可能根本不使用 JS
,但据我了解,您的目标是专门使用 JS
来显示该数据以供练习。这就是使用 JS
.
DOM
的方式