2015-09-14 2 views
3

В чем разница между ListView, FormView и PageView в openerp.web.XXXXXXXX.include({...? и есть ли еще? Я пытался узнать JS для ODOO, но официальная документация плохая или неточная, я действительно хочу знать, как правильно их использовать? и сколько еще есть ?, Было бы здорово, если бы вы могли поделиться рекомендациями по этой теме. Спасибо за ваше время!В чем разница между ListView, FormView и PageView? в JScript для (ODOO | OpenERP)

ответ

4

В принципе вы можете изучать концепции просмотров со всеми возможными свойствами и дочерними элементами от 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 в основном строится на основе этих трех концепций.

  1. Classes
  2. Widgets
  3. The QWeb Template Engine

Классы:

Многое, как модулей и, вопреки большинству объектно-ориентированных языков, 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, вы можете обновить его переопределить этот метод))

Есть два главное, чтобы достичь такого рода задачи.

  1. Добавление/обновление методов в соответствии с потребностями.
  2. Добавить созданные файлы в соответствующий шаблон.

Добавить эту функцию в файл 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.

+0

Спасибо за ваш ответ @Empiro TechnologiesPvt. эта информация действительно полезна, но она не отвечает на мой вопрос: «Я действительно хочу знать, как правильно их использовать?» Другими словами, как работать с 'openerp.web.ListView.include ({...' или 'openerp .web.FormView.include ({... 'или' openerp.web.PageView.include ({... '? Что-то вроде, в модуле' sale', для формы предложения, как ограничить ввод только букв в 'Reference/Description' .js? Мне нужно использовать FormView? как это сделать? или на странице Order Lines, как ограничить« Unit Price »только для ввода чисел? только на стороне клиента !!!! Мне нужно пример! –

+0

@Juan Salcedo: Я обновил ответ с образцом, чтобы расширить функции listview. для Reference/Description разрешите только буквы, которые вам нужно глубже, чтобы достичь этого. –

+0

Спасибо, я попробую! –