您好stackoverflow社区,
是的我知道,其他人有同样的问题,但他们在同一个文件中定义商店,sencha touch 2的例子对我有用,但是当我尝试将此代码应用到我的时候我得到了这个错误:
未捕获的SyntaxError:意外的标识符Alertas.js:105未捕获 错误:即使文件有,也不会声明以下类 已加载:'myMoney.view.Alertas'。请检查源代码 他们对应的可能错别字的文件:'app / view / Alertas.js
我认为我需要以另一种方式打电话给我的商店,但这是我的问题:
如何调用已为搜索列表定义的商店?
有我的代码:
Ext.define('myMoney.view.Alertas',{
extend: 'Ext.navigation.View',
fullscreen: true,
scrollable: true,
styleHtmlContent: true,
xtype: 'alertas',
config: {
title: 'Contactos',
iconCls: 'bookmarks',
items: [
{
xtype: 'list',
grouped: true,
ui: 'round',
title: 'Contactos',
fullscreen: true,
itemTpl: '{title}',
styleHtmlCls: true,
//cls: 'x-contacts',
store: 'Contactos',
itemTpl: [
'<div class="headshot" style="background-image:url(resources/images/headshots/{headshot});"></div>',
'{firstName} {lastName}',
'<span>{title}</span>'
].join(''),
items: [
{
xtype: 'searchfield',
placeHolder: 'Buscar contacto...',
listeners: {
scope: this,
clearicontap: this.onSearchClearIconTap,
keyup: this.onSearchKeyUp
}
},
]
},
]
},
/**
* Llamado cuando la barra de busqueda tiene un evento keyup
*/
onSearchKeyUp: function(field) {
//Se obtiene el store y el valor del field
var value = field.getValue(),
//store = this.getStore();
//NOW:
store = Ext.data.StoreManager.lookup('Contactos');
//se limpian los filtros actuales del store para comenzar la nueva busqueda
store.clearFilter();
//Verificamos que el valor tenga alguna modificacion
if (value) {
//El usuario pudo haber introducido espacion en blanco,asi que los cortamos para poder recorrer todo el valor
var searches = value.split(' '),
regexps = [],
i;
//recorremos todo el valor
for (i = 0; i < searches.length; i++) {
//si no hay nada continuamos
if (!searches[i]) continue;
//Si encontramos algo creamos una expresion regular que es sensible a mayusculas
regexps.push(new RegExp(searches[i], 'i'));
}
//Ahora se filtra el store
//El metodo se pasara a cada record en el store
store.filter(function(record) {
var matched = [];
//Iteramos a traves de cada expresion regular
for (i = 0; i < regexps.length; i++) {
var search = regexps[i],
didMatch = record.get('firstName').match(search) || record.get('lastName').match(search);
//Si coincide el primer o ultimo nombre se coloca en la lista de los que coinciden
matched.push(didMatch);
}
//Si nada se consigue no se retorna nada
if (regexps.length > 1 && matched.indexOf(false) != -1) {
return false;
} else {
//Si no se muestra lo que se encontro
return matched[0];
}
});
}
},
/**
* Llamado cuando el usuario presiona el icono de 'x' en la barra de busqueda
* Solo que quitan los filtros del store
*/
onSearchClearIconTap: function() {
//this.getStore().clearFilter();
//NOW:
store = Ext.data.StoreManager.lookup('Contactos');
}
/**
* Metodo llamado para tomar el store
*/
//I DELETE THIS FUNCTION
/*getStore: function() {
this.store = 'myMoney.store.Contactos'*/
}
});
答案 0 :(得分:0)
请注意吸气剂:)
getStore: function() {
this.store = 'myMoney.store.Contactos'
}
我认为它打算返回商店,而不仅仅是分配给类成员。
onSearchKeyUp: function(field) {
//Se obtiene el store y el valor del field
var value = field.getValue(),
store = this.getStore(); // undefined
变量 store 始终未定义...
答案 1 :(得分:0)
您需要使用Ext.StoreManager,以便按ID使用指定的商店。
示例:
这家商店:
Ext.create('Ext.data.Store', {
model: 'SomeModel',
storeId: 'myStore'
});
使用
var store = Ext.data.StoreManager.lookup('myStore');
或在视图中使用它:
Ext.create('Ext.view.View', {
store: 'myStore',
// other configuration here
});
答案 2 :(得分:0)
以上NeoMorfeo代码仅在获取商店值
时是正确的您需要使用Ext.StoreManager,以便按ID使用指定的商店。
示例:
这家商店:
Ext.create('Ext.data.Store', {
model: 'SomeModel',
storeId: 'myStore'
});
使用
var store = Ext.getStore('myStore');
或在视图中使用它:
Ext.create('Ext.view.View', {
store: 'myStore',
// other configuration here
});