自定义扩展dijit / _TemplatedMixin抛出"无效模板错误"

时间:2016-02-03 14:14:25

标签: javascript inheritance dojo

以下是我尝试做的简化示例:

https://jsfiddle.net/1c5qpke9/2/

require([
  'dojo/_base/declare',
  'dijit/_WidgetBase',
  'dijit/_TemplatedMixin',
  'dojo/domReady!'
], function(declare, _WidgetBase, _TemplatedMixin) {

    var _CustomTemplatedMixin = declare([_TemplatedMixin], {

    _stringRepl: function() {
      console.log('_stringRepl');
      this.inherited(arguments);
    },

    _fillContent: function() {
      console.log('buildRendering');
      this.inherited(arguments);
    }

  });

  var CustomWidget = declare([_WidgetBase, _CustomTemplatedMixin], {

    templateString: '<div class="${baseClass}"><span>Custom Widget "${testName}"</span></div>',
    testName: 'TestName'

  });

  new CustomWidget({}, 'MyWidget');

});

如果我执行此操作,则会收到以下错误:

  

错误:模板无效:自定义窗口小部件   &#34; $ {测试名}&#34;

当我在CustomWidget类中使用_TemplatedMixin而不是_CustomTemplatedMixin时。它没有错误。

1 个答案:

答案 0 :(得分:1)

这是因为_stringRepl返回一个值,因为你是它的子类,它也应该返回一个值,所以返回继承值 离。

  _stringRepl: function() {
  console.log('_stringRepl');
  return this.inherited(arguments);
},