我在Sencha的网站上找不到任何有关以下情况的文档:

多维数据集(基类)

Ext.define('example.ext.Cube', {
    sides: [
        'one',
        'two',
        'three',
        'four',
        'five',
        'six']
});


以下两个版本中的哪个版本是将新属性连接到现有属性的标准方式?两者的工作方式相同,但我觉得版本A更有意义

十二面体(儿童班)

版本A

Ext.define('example.ext.Dodecahedron', {
    extend: 'example.ext.Cube',
    sides: [
        'seven',
        'eight',
        'nine',
        'ten',
        'eleven',
        'twelve'],

    constructor: function () {
        var me = this;
        // Alternatively: Ext.apply(me.sides, me.superclass.sides);
        me.sides = me.superclass.sides.concat(me.sides);
        me.callParent(arguments);
    }
});


版本B

Ext.define('example.ext.Dodecahedron', {
    extend: 'example.ext.Cube',
    constructor: function () {
        var me = this;
        Ext.apply(me.sides, [
            'seven',
            'eight',
            'nine',
            'ten',
            'eleven',
            'twelve']);
        me.callParent(arguments);
    }
});


工作实例



Ext.onReady(function() {
  Ext.ns('example.ext');

  Ext.define('example.ext.Cube', {
    sides: [
      'one',
      'two',
      'three',
      'four',
      'five',
      'six'
    ],

    roll: function() {
      return this.sides[Math.floor(Math.random() * this.sides.length)];
    }
  });

  Ext.define('example.ext.Dodecahedron', {
    extend: 'example.ext.Cube',
    sides: [
      'seven',
      'eight',
      'nine',
      'ten',
      'eleven',
      'twelve'
    ],

    constructor: function() {
      var me = this;
      me.sides = me.superclass.sides.concat(me.sides);
      me.callParent(arguments);
    }
  });

  var die12 = Ext.create('example.ext.Dodecahedron');

  window.roll = function() {
    var side = die12.roll();
    var indefiniteArticle = side.match(/^[aeiou](?![n])/) ? 'an' : 'a';
    document.getElementById('result').innerHTML = Ext.String.format('You rolled {0} {1}.', indefiniteArticle, side);
  }
});

.vertical {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
}
#dice {
  background: url('https://cdn4.iconfinder.com/data/icons/48x48-free-object-icons/48/Dice.png') 0 0 no-repeat;
  height: 48px;
  width: 48px;
  padding: 0;
  border: none;
  outline: none;
}
#result {
  margin-left: 0.5em;
}

<script src="//cdnjs.cloudflare.com/ajax/libs/extjs/4.2.1/builds/ext-core.js"></script>
<input type="button" id="dice" value="" onclick="roll();" />
<div style="display:inline-block;">
  <div style="position:relative;height:64px;width:256px;">
    <div class="vertical">
      <span id="result"></span>
    </div>
  </div>
</div>

最佳答案

Ext JS 5配置系统允许链接原型的继承配置。在4.x中,您必须自己滚动。

我建议您使用类似您的版本A的版本,从长远来看,它将减轻痛苦。

关于javascript - 将子项连接到父项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27450515/

10-12 06:38