Мы уже довольно давно работаем над этим приложением, разработанным с помощью Sencha Touch 2.
Обычно мы тестируем и отлаживаем код с помощью Chrome и Ripple.
Проблема, с которой мы столкнулись, заключается в том, что мы добавили некоторую пользовательскую логику поиска и группировки в одно из наших представлений списков. При тестировании и отладке с помощью Chrome все работало, как и ожидалось, но затем мы использовали команду для его упаковки, чтобы интегрировать его с Cordova и создать приложения для Android и iOS. Мы использовали следующую команду:
sencha app build native
По какой-то причине код, созданный с помощью этой команды, перезаписывает наш код пользовательского поиска и группировки JavaScript.
Почему это могло происходить. Нам нравится думать, что это не инструмент сенча работает неправильно, а то, что мы делаем неправильно, что вызывает это.
Мы не знаем, в чем может быть причина. Кто-нибудь может пролить свет на это? Почему наши пользовательские функции группировки и фильтрации перезаписываются при упаковке приложения?
Ниже приведен отрывок о том, как мы определяем метод группировки в нашем магазине. Опять же, когда мы пробуем это в нашей среде отладки, все работает правильно. Проблема в том, что когда мы упаковываем его с помощью приведенной выше команды, функция группировки заменяется функцией группировки sencha touch 2 по умолчанию, которая возвращает первый символ строки.
Ext.define('app.store.definitions',{
extend:'Ext.data.Store',
requires: [
'Ext.data.Connection'
],
config:{
fields: ['id','name', 'Description'],
sorters: 'name',
grouper: function(record) {
// these are the translation arrays
var accents = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛ";
var desiredvalue = "AAAAAEEEEIIIIOOOOUUUU";
// first we upercase the first character of the name
var firstchar = record.get('name').toUpperCase()[0];
//next we check if it is a special character by checking position in accents string
var n = accents.indexOf(firstchar);
// if character is in accents (means it is a special character) we get corresponding normal character
if (n <> -1)
{ firstchar = desiredvalue.charAt(n);
};
// and now we just return this value ad the grouping value
return firstchar;
}
После выполнения «нативной сборки приложения sencha» и распаковки сгенерированного кода мы понимаем, что функция группировки была заменена на
grouper: function(record) {
var firstchar = record.get('name`);
return firstchar;
}
grouper: function (a) {return a.get("name")[0]},
которая является функцией группировки по умолчанию? 28.04.2014