У меня проблемы с получением кнопки-виджета с помощью dojo/registry.
У меня есть виджет, и внутри его postCreate
-функции вызываются некоторые другие функции. В последнем registry.byId()
возвращает "undefined", вызывая ошибку. Элемент с указанным идентификатором существует в html-шаблоне.
Я также создал очень простую рабочую версию в JSFiddle, и даже если я попробую этот вариант в своем коде, я получить «неопределенное». EDIT: обновлен Fiddle
Вот краткое изложение кода с исходным использованием registry.byId()
в функции _setupButton, а также с решением из JSFiddle до части declare
. Обе версии возвращают «undefined»:
define(["dojo/_base/declare", "dojo/_base/array", "dojo/_base/lang", "dojo/dom-class", "dojo/number", "dojo/parser", "dojo/ready", "dojo/dom-construct", "dijit/registry", "dijit/form/NumberTextBox", "dijit/_Widget", "dijit/_TemplatedMixin", "dijit/Menu", "dijit/MenuItem", "dojo/text!./templates/template.html"],
function(declare, array, lang, domClass, number, parser, ready, domconstruct, registry, NumberTextBox, _Widget, _TemplatedMixin, Menu, MenuItem, templateStringContent) {
parser.parse();
ready(function () {
console.info(registry.byId("startCalculationButton"));
});
return declare([_Widget, _TemplatedMixin],
{
templateString: templateStringContent,
postCreate() {
this._setupButton();
},
_setupButton: function() {
buttonWidget = registry.byId("startCalculationButton");
buttonWidget.set("disabled", true);
},
});
});
HTML такой же, как и в предоставленном JSFiddle-Snippet. Другие идентификаторы (для других элементов) также не будут работать. Так почему же registry.byId()
мне не подойдет? Я новичок в стиле AMD, и код уже работал со старым синтаксисом, используя dijit.byId
.
Изменить:
Выяснил, что виджет не прописан в реестре-объекте. Что может быть причиной этого? Если бы шаблон не был найден, я бы получил ошибку 404, поэтому эту причину мы можем исключить.
Изменить2:
Также document.getElementById()
просто вернет null
. Я думал, что передачи templateString будет достаточно, а dojo сделает все остальное?
startCalculationButton
? - person Ken Franqueiro   schedule 08.06.2015templateString
-участнику . Есть ли у меня что-то еще, чтобы заставить это работать? - person Onsokumaru   schedule 09.06.2015