В чем разница между ListView
, FormView
и PageView
в openerp.web.XXXXXXXX.include({...
? и есть ли еще? Я пытался узнать JS для ODOO, но официальная документация плохая или неточная, я действительно хочу знать, как правильно их использовать? и сколько еще есть ?, Было бы здорово, если бы вы могли поделиться рекомендациями по этой теме. Спасибо за ваше время!В чем разница между ListView, FormView и PageView? в JScript для (ODOO | OpenERP)
ответ
В принципе вы можете изучать концепции просмотров со всеми возможными свойствами и дочерними элементами от Odoo documentation.
Формы
просмотров Форма используется для отображения данных из одной записи. Их корневой элемент равен <form>
. Они состоят из обычного HTML с дополнительными структурными и семантическими компонентами.
- Сделка с одной записью за раз.
- Может содержать другие структурные компоненты (например, ноутбук, лист).
- Невозможно сортировать &, потому что на данный момент существует только одна запись.
Списки
Корневой элемент списка просмотра является <tree>
. Корень списка может иметь следующие атрибуты:
- Показать набор записей в дереве.
- Не может содержать никаких конструктивных элементов.
- Поиск и сортировка возможны.
В каждом отдельном виде есть файлы javascript для каждого вида, вы можете ссылаться на него из WEB-модуля.
- Web/статический/SRC/JS/view_form.js
- Web/статический/SRC/JS/view_list.js
- Web/статический/SRC/JS/view_list_editable.js
- Web/статическая/SRC/JS/view_tree.js
и другие вспомогательные функции врезке, xml_to_json, xml_to_str, json_node_to_xml, fields_view_get и многие другие доступны в пределах views.js.
Страница является структурным компонентом, поэтому она покрыта внутри формы.
Структура модуля Javascript для WEB.
Модуль JavaScript в основном строится на основе этих трех концепций.
Классы:
Многое, как модулей и, вопреки большинству объектно-ориентированных языков, javascript не строит в классах, хотя он обеспечивает примерно эквивалентные (если более низкий уровень и более подробные) механизмы. Для простоты и удобства для разработчиков Odoo web предоставляет систему классов на основе Javascript Inheritance.
Widgets:
Веб-клиент Odoo расслоения JQuery для облегчения манипуляций с DOM. Это полезно и обеспечивает лучший API, чем стандартный W3C DOM2, но недостаточный для структурирования сложных приложений, что приводит к сложному обслуживанию.
Подобно объектно-ориентированным инструментариям пользовательского интерфейса (например, Qt, Cocoa или GTK), Odoo Web создает определенные компоненты, отвечающие за разделы страницы. В среде Odoo основой для таких компонентов является класс Widget(), компонент, специализирующийся на обработке раздела страницы и отображении информации для пользователя.
Qweb Template Engine:
Это позволяет генерировать и отображать любой тип контента, но становится громоздкой, генерируя значительные количества DOM (много дублирования, со ссылкой на вопросы, ...)
Как и во многих других средах, решение Odoo заключается в использовании template engine. Двигатель шаблона Odoo называется QWeb.
Qweb является XML-ориентированный язык шаблонный:
- Он полностью реализован в JavaScript и отображаются в браузере
- Каждый шаблон файла (XML-файлы) содержит несколько шаблонов
- Он имеет специальную поддержку в Odoo вебе Widget(), хотя он может быть использован вне веб-клиента Odoo (и это можно использовать Widget() , не полагаясь на Qweb)
Пример: (Извлекает номер вида по записей на странице, по умолчанию 80, вы можете обновить его переопределить этот метод))
Есть два главное, чтобы достичь такого рода задачи.
- Добавление/обновление методов в соответствии с потребностями.
- Добавить созданные файлы в соответствующий шаблон.
Добавить эту функцию в файл javascript и добавить этот файл в активы web_backend, используя наследование шаблона, тогда эффект этого кода будет автоматически.
instance.web.ListView.include({
limit : function(){
if (this._limit === undefined) {
this._limit = (this.options.limit
|| this.defaults.limit
|| (this.getParent().action || {}).limit
|| 160);
}
return this._limit;
},
});
код Xml:
<template id="assets" inherit_id="web.assets_backend">
<xpath expr="//script[@src='/web/static/src/js/view_tree.js']" position="after">
<script type="text/javascript" src="your script file path"></script>
</xpath>
</template>
Установите свой модуль и увидеть эффект, так же, как вы можете достичь всего с помощью наследования JavaScript.
Спасибо за ваш ответ @Empiro TechnologiesPvt. эта информация действительно полезна, но она не отвечает на мой вопрос: «Я действительно хочу знать, как правильно их использовать?» Другими словами, как работать с 'openerp.web.ListView.include ({...' или 'openerp .web.FormView.include ({... 'или' openerp.web.PageView.include ({... '? Что-то вроде, в модуле' sale', для формы предложения, как ограничить ввод только букв в 'Reference/Description' .js? Мне нужно использовать FormView? как это сделать? или на странице Order Lines, как ограничить« Unit Price »только для ввода чисел? только на стороне клиента !!!! Мне нужно пример! –
@Juan Salcedo: Я обновил ответ с образцом, чтобы расширить функции listview. для Reference/Description разрешите только буквы, которые вам нужно глубже, чтобы достичь этого. –
Спасибо, я попробую! –