我在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/