我目前正在与Sencha合作开展一个Javascript项目,我正面临一个我甚至无法理解的问题。
问题很简单。这是我的代码:
console.log("store : ");
console.log(store);
console.log("store length :");
console.log(store.data.length);
以下是它的回报:
store :
_data: Ext.apply.create.Class
_model: ()
_modelDefaults: Ext.Object.classify.objectClass
_params: Ext.Object.classify.objectClass
_proxy: Ext.apply.create.Class
_remoteFilter: false
_remoteGroup: false
_remoteSort: false
_storeId: "Indicator_Value"
_syncRemovedRecords: false
config: Ext.Object.classify.objectClass
data: Ext.apply.create.Class
_autoFilter: true
_autoSort: true
_filterRoot: "data"
_sortRoot: "data"
all: Array[2]
config: Ext.Object.classify.objectClass
dirtyIndices: false
getKey: (record)
indices: Object
initConfig: ()
initialConfig: Object
items: Array[2]
keys: Array[2]
length: 2
map: Object
__proto__: Ext.util.Collection#constructor
dateFirst: Mon Aug 31 2015 14:47:36 GMT+0200 (Paris, Madrid (heure d’été))
dateLast: Mon Aug 31 2015 15:02:48 GMT+0200 (Paris, Madrid (heure d’été))
emptyNext: false
emptyPrevious: false
eventDispatcher: Ext.apply.create.Class
getEventDispatcher: ()
getId: ()
getObservableId: ()
getUniqueId: ()
graphType: 1
id: "myapp-store-indicator_value-1"
indicatorId: 262
initConfig: ()
initialConfig: Object
initialized: true
managedListeners: Object
observableId: "#myapp-store-indicator_value-1"
period: "H"
removed: Array[0]
titleIndicatorValue: "Duration in FTC"
usedSelectors: Array[1]
__proto__: Object
store length :
14
我只是不明白。 store.data.length应该返回2,但它会一直返回14.也许有些东西我只是不了解商店如何工作? 无论如何,我真的很喜欢一些帮助,因为我已经坚持了大约2个小时,我看不到它的结束。
谢谢!
答案 0 :(得分:2)
我只是不明白。 store.data.length应该返回2,但它保持不变 返回14。
这很容易。在哪里看到" 2"您会看到商店的当前计数,因为您正在查看商店对象。在哪里看到" 14"在将其写入控制台时,您会看到计数。显然,自那以后,无论出于何种原因,伯爵都发生了变化!
这很容易重现:
var store = Ext.create('Ext.data.Store', {
data: ['foo', 'bar', 'aa', 'foo', 'bar', 'aa', 'foo', 'bar', 'aa', 'foo', 'bar', 'aa', 'bar', 'aa']
});
console.log(store);
console.log(store.data.length);
store.removeAt(0, 12);
答案 1 :(得分:0)
length
是一个JavaScript属性,所以你不应该调用你的变量长度。
如果它是你正在使用的这个框架的类,那么试着找出你想要的长度,并试试这个:
console.log(store.data.all.length);
答案 2 :(得分:0)
Ext.data.Store
的{{3}}不是数组。这是一个data
property。 MixedCollection没有length
属性。
获取商店中的数字或记录的正确方法是使用
store.getCount()
答案 3 :(得分:0)
数据存储中有data属性,因此您可以使用以下代码阅读:
store.data
store.data
的类型为Ext.util.MixedCollection,因此您应该将其计算在:
store.data.getCount()
正如您使用console.log(store);
所获得的,您可能会发现此代码也有效:
store.data.items.length