我在我的 Odoo 中創建了一些新模塊,現在在加載每個表單時,我需要根據其所需的模型和我的任意更改來操作創建的 XML 元素,或者參考一些特定的函式進行資料驗證(我知道還有其他資料驗證的方法,但我很好奇是否可以使用 jquery 函式來完成)。
我嘗試在視圖檔案夾中添加一個 HTML 檔案并撰寫一個簡單的腳本,但我不確定它是否是正確的位置,甚至是正確的代碼段。
<script>
$(document).ready(function()
{
$("input").keyup(function(event){
console.log('t');
});
});
</script>
如果有人能為我的問題提供一些有用的答案,我會很高興。
uj5u.com熱心網友回復:
您可以使用該屬性自定義現有表單視圖js_class,其值將是擴展表單視圖的名稱。
要將新事件系結到輸入,您可以自定義表單控制器并擴展events映射。
例子:
1)擴展表單視圖:
odoo.define("MODULE_NAME.custom_form", function (require) {
"use strict";
var FormController = require('web.FormController');
var FormView = require('web.FormView');
var viewRegistry = require('web.view_registry');
var CustomController = FormController.extend({
events: _.extend({}, FormController.prototype.events, {
'keyup input': '_onInputKeyup',
}),
_onInputKeyup(ev) {
console.log('t');
},
});
var CustomFormView = FormView.extend({
config: _.extend({}, FormView.prototype.config, {
Controller: CustomController,
}),
});
viewRegistry.add('custom_form', CustomFormView);
return {
CustomController: CustomController,
CustomFormView: CustomFormView,
};
});
2)將其添加到清單檔案中的資產條目
'assets': {
'web.assets_backend': [
'MODULE_NAME/static/src/js/custom_form_view.js'
],
},
3)在表單視圖示簽上設定js_class屬性
<form js_class="custom_form">
uj5u.com熱心網友回復:
對于后臺 javascript,請考慮使用“Odoo 內置 js 庫”:
在您的自定義模塊“my_custom_module”中: 創建一個新檔案 /my_custom_module/static/src/js/my_customization.js:
odoo.define('my_custom_module.switch_to_gantt', function(require) {
"use strict";
var core = require('web.core');
var _t = core._t;
var AbstractController = require('web.AbstractController');
AbstractController.include({
/**
* Original : Intercepts the 'switch_view' event to add the controllerID into the data, and lets the event bubble up.
* Included : On switching from Kanban to Gantt view : Remove all the GroupBy Filters because it caused Error
*/
_onSwitchView: function (ev) {
console.log(ev.data.view_type);
//debugger;
/* only on the specific view : gantt: */
if(ev.data.view_type == 'gantt')
{
/* only on the specific model : event.event: */
if(ev.target.modelName == 'event.event')
$('.o_searchview .o_facet_remove').click();
}
this._super.apply(this, arguments);
},
});
});
并在__manifest__.py檔案中宣告此資產:
'assets': {'web.assets_qweb': ['/my_custom_module/static/src/js/my_customization.js']}
uj5u.com熱心網友回復:
如果您想使用 jquery 或任何 js 庫,您需要將它們放在此路徑 /your_app/static/src/js/test.js 下的此檔案中,檔案應如下所示:
$(document).ready(function()
{
$("input").keyup(function(event){
console.log('t');
});
});
你需要像這樣為這項作業添加資產:
'assets': {'web.assets_qweb': ['/your_app/static/src/js/test.js']} #path of the file
這適用于 jquery 不適用于在 odoo 中構建 js 模型
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517708.html
