javascript - 自定义扩展 dijit/_TemplatedMixin 抛出 "Invalid template Error"

标签 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');

});

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

Error: Invalid template: Custom Widget "${testName}"

当我在 CustomWidget 类中使用 _TemplatedMixin 而不是 _CustomTemplatedMixin 时。它可以正常工作,没有错误。

最佳答案

这是因为 _stringRepl 返回一个值,因为您正在子类化它,所以它也应该返回一个值,因此返回继承值 例如。

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

关于javascript - 自定义扩展 dijit/_TemplatedMixin 抛出 "Invalid template Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35179444/

相关文章:

javascript - 多个 choropleth 图层应用不同的样式

Java 编码——继承问题

Dojo DataGrid 非常慢

python - 有没有办法在 Python3 的 super() 中忽略部分 __init__() 方法?

javascript - this.domNode 为空

javascript - 显示 XPage 中损坏的 Dojo 选项卡

javascript - 如何将动画添加到 D3 自定义 radio

javascript - 在 Rails App 中实现 WrapBootstrap 主题

javascript数组按对象键过滤重复项

inheritance - 在 TypeScript 中是否有等同于 "sealed"或 "final"的东西?