2013-04-11 2 views
0

У меня есть собственный виджет, который работает неправильно. Он создается, но не вызывает функцию postCreate. Я не получаю сообщений об ошибках.пользовательский виджет dojo не будет называть postCreate

Я удалил любой дополнительный код из виджета для целей тестирования и здесь полученный код:

define(["dojo/_base/declare", 
     "dojo/_base/lang", 
     "dijit/_WidgetBase", 
     "dijit/_TemplatedMixin", 
     "dijit/_WidgetsInTemplateMixin", 
     "dojox/mobile/Button", 
     "dojo/text!pgonline/widgets/AttributeInspector/templates/AttributeInspector.html"], 

    function(declare, 
      lang, 
      _WidgetBase, 
      _TemplatedMixin, 
      _WidgetsInTemplateMixin, 
      Button, 
      template) { 

     return declare("AttributeInspector2", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], { 

      templateString : template, 
      baseClass : "AttributeInspector2", 
      postCreate : function() { 
       dojo.connect(this, "onBeforeTransitionIn", lang.hitch(this, this.onPageLoad)); 
      }, 

      onPageLoad : function() { 
      } 
     }); 
    }); 

Я могу сказать, что это в настоящее время экземпляра, потому что, когда я отладку в Chrome, можно установить точку останова строка: templateString : template, и она остановится на этой точке останова, но она не остановится на точке останова для кода внутри функции postCreate. Сам шаблон представляет собой простой HTML-файл, содержащий несколько div и один dojox.mobile.button.

UPDATE:

Вот код экземпляра:

require(["pgonline/widgets/AttributeInspector2"], function(AttributeInspector) { 

    var att = new AttributeInspector({}); 

att.placeAt("attributeInspector"); 
att.startup(); 

}); 
+0

Как ваш класс виджета получить реализованные? Parser? Программный? – BuffaloBuffalo

+0

@BuffaloBuffalo - Я добавил код для создания сообщения. – Brian

+0

Можете ли вы подражать этому поведению в jsfiddle? Я [устанавливаю этот вариант] (http://jsfiddle.net/H7Zh8/39/) аналогично вашему (другому обработчику событий и модулю, но тем же настройкам виджета и созданию экземпляра), и он работает так, как ожидалось. – Default

ответ

2

Это может быть покинуть базу, но, основываясь на вашем fiddle, ошибка в консоли Uncaught Error: Invalid template

Ваш шаблон выглядит следующим образом:

<div> 
    <button data-dojo-attach-point='prevButton' data-dojo-type='dojox.mobile.Button'></button> 
    <button data-dojo-attach-point='nextButton'></button> 
</div> 
<div data-dojo-attach-point='attributes'></div> 

Dijit требует шаблонов иметь один корень node-- так как исправить, просто добавьте содержащий DIV в шаблон

<div> 
    <div> 
     <button data-dojo-attach-point='prevButton' data-dojo-type='dojox.mobile.Button'></button> 
     <button data-dojo-attach-point='nextButton'></button> 
    </div> 
    <div data-dojo-attach-point='attributes'></div> 
</div> 
Смежные вопросы