Как определить класс Widget для панели инструментов с кнопками в Dojo Toolkit? - PullRequest
0 голосов
/ 27 апреля 2018

Я создам новый класс - панель инструментов со стандартными кнопками действий (Добавить, Изменить, Удалить, Обновить) . Я написал простой класс для этого:

define([
    "dojo/_base/declare",
    "dijit/_WidgetBase",
    "dijit/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",
    "dijit/Toolbar",
    // Template for new widget
    "dojo/text!/ui/widgets/StandardToolbar.html",
    // Load dijit/form/Button widget as dependency for parsing template
    "dijit/form/Button"
], function(declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, Toolbar, templateString){
    return declare("app.StandardToolbar", [
        _WidgetBase,
        _TemplatedMixin,
        _WidgetsInTemplateMixin,
        Toolbar
    ], {
        templateString: templateString
    });
});

Шаблон расширен с базовой панели инструментов:

<div class="dijit" role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode">
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="addButton">Add</button>
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="editButton">Edit</button>
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="removeButton">Remove</button>
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="refreshButton">Refresh</button>
</div>

И это не работает. Кнопки на панели инструментов отображаются как стандартные кнопки HTML, а не как виджеты Dojo. Что я делаю не так?

1 Ответ

0 голосов
/ 27 апреля 2018

Я думаю, вы просто пропустили установку типа додзё data-dojo-type='dijit/Toolbar' в вашем шаблоне containerNode div.

Вы должны установить:

<div data-dojo-type='dijit/Toolbar' class="dijit" role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode">

require(["dijit/Toolbar", "dijit/form/Button","dojo/parser", "dojo/domReady!"], function(Toolbar, Button, Parser) {
  Parser.parse();
});
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet"/>
<div class="claro">
  <div class="dijit" data-dojo-type='dijit/Toolbar' role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode">
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="addButton">Add</button>
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="editButton">Edit</button>
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="removeButton">Remove</button>
  <button data-dojo-type="dijit/form/Button" data-dojo-attach-point="refreshButton">Refresh</button>
</div>
</div>
...