Sencha app构建本机覆盖我们的自定义代码

时间:2014-04-22 11:11:11

标签: javascript cordova sencha-touch-2

我们使用Sencha Touch 2开发了相当长一段时间的应用程序。

我们通常使用Chrome和Ripple测试和调试代码。

我们面临的问题是我们在其中一个列表视图中添加了一些自定义搜索和分组逻辑。当使用chrome进行测试和调试时,一切都按预期工作,但随后我们使用该命令对其进行打包,以便将其与Cordova集成并生成Android和iOS应用程序。我们使用以下命令:

sencha app build native

出于某种原因,使用此命令生成的代码将覆盖我们的自定义搜索和分组JavaScript代码。

为什么会发生这种情况。我们喜欢这样的事情,即不是sencha工具不能正常工作,而是我们做错了导致这种情况发生的事情。

我们不知道原因是什么。任何人都可以对此有所启发吗?为什么在打包应用程序时会覆盖我们的自定义分组器和过滤功能?

Bellow是关于我们如何在商店中定义分组方法的摘录。再次,当我们在调试环境中尝试这个时,它可以正常工作。问题是当我们使用上面的命令打包它时,grouper函数被默认的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 app build native”并解压缩生成的代码后,我们发现了石斑鱼功能已被

取代
       grouper: function(record) {
          var firstchar = record.get('name`);
          return firstchar;
      }

1 个答案:

答案 0 :(得分:0)

我使用石斑鱼测试了我的一个应用程序的原生构建,但它并没有替换我的代码。我认为你需要在石斑鱼对象文字中指定groupFn参数。请参阅以下示例:

Ext.define('app.store.definitions',{
    extend:'Ext.data.Store',
    requires: [
        'Ext.data.Connection'
    ],

    config:{
        fields: ['id','name', 'Description'],
        sorters: 'name',
        grouper: {
            groupFn: 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;
           }
       }