Sencha touch 如何使用store在sencha touch中设置动态url?

Sencha touch 如何使用store在sencha touch中设置动态url?,sencha-touch,sencha-touch-2,store,Sencha Touch,Sencha Touch 2,Store,我是这个平台的新手,现在我无法使用类别id和令牌设置动态url 我想要的是: 我列出了不同的项目,它们有不同的ID,但有相同的令牌,从登录阶段获得的令牌(tokent是同一个用户)。我想从服务器获取与类别id对应的值。 以下是我的模型: Ext.define('MyApp.model.CategoryDisplayModelMenu', { extend: 'Ext.data.Model', config: { fields: [ /*'ca

我是这个平台的新手,现在我无法使用类别id和令牌设置动态url

我想要的是: 我列出了不同的项目,它们有不同的ID,但有相同的令牌,从登录阶段获得的令牌(tokent是同一个用户)。我想从服务器获取与类别id对应的值。 以下是我的模型:

Ext.define('MyApp.model.CategoryDisplayModelMenu', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
           /*'cat_id',*/
           'category',
           'name',
        ],

        belongsTo: "MyApp.model.CategoryDisplayModel"
    }
});
另一个相关模型是:

Ext.define('MyApp.model.CategoryDisplayModel', {
    extend: 'Ext.data.Model',
    requires: ['MyApp.model.CategoryDisplayModelMenu'],
    config: {
        fields: [
         {name:'data', mapping: 'data'},
            {name:'name'},
            {name: 'category'},
            {name: 'author'},
        ],
    }
});
Ext.define('MyApp.store.CategoryValueStore', {
    extend: 'Ext.data.Store',
    alias: 'store.CategoryValueStore',

    requires: [
        'MyApp.model.CategoryDisplayModel'
    ],
     config: {
        model: 'MyApp.model.CategoryDisplayModel',
        storeId: 'categoriesvaluestore',

    proxy: {
        type: 'rest',
        url: 'http://horror/myapp/api/word/searched_words/catID/'+ 1+'/'+ SDSILLYTOKEN+'/'+650773253e7f157a93c53d47a866204dedc7c363,
        noCache: false,           
        reader: {
            type: 'json',
            rootProperty: ''
        }  }    }
});
Ext.define("MyApp.view.ArchitectureDisplayMain", {
  extend: 'Ext.Container',  
  alias: "widget.architecturewords", 

  config: {
   {      

       xtype: 'list',
       scrollable: true,       
       itemId: 'demolist',          
            itemTpl: [
            '<div><tpl for="data"><ul class="catList">{name} -test- {category}</ul> <ul>{author}</ul></tpl></div>'
            ],
            store: 'categoriesvaluestore',
          }
          }
          });
  Ext.define('MyApp.model.CategoryModelMenu', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'cat_id',
           'category_name',
        ],

        belongsTo: "MyApp.model.CategoryModel"
    }
}); 
Ext.define('MyApp.view.Category', {
    extend: 'Ext.List',
   alias: "widget.category", 
    config: {
        title: 'Stores',
        cls: 'category-data',
        scrollable: false,
        store: 'CategoryStore',
        itemTpl: [

        '<div class="categoryListings">',
          '<tpl for="data">',
          '<span onClick="catOption({cat_id})">{category_name}</span> ',
          '</tpl>',
          '</div>',

        ].join('')
    }
  //}
});

function catOption(id){

  console.log("ID--"+id);
var  tokan= '650773253e7f157a93c53d47a866204dedc7c363';
     Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);  
         Ext.Viewport.add([

             { xtype: 'wordsview' }

             ]);  

} and others
我被设置在商店中但无法工作的内容:

Ext.define('MyApp.model.CategoryDisplayModel', {
    extend: 'Ext.data.Model',
    requires: ['MyApp.model.CategoryDisplayModelMenu'],
    config: {
        fields: [
         {name:'data', mapping: 'data'},
            {name:'name'},
            {name: 'category'},
            {name: 'author'},
        ],
    }
});
Ext.define('MyApp.store.CategoryValueStore', {
    extend: 'Ext.data.Store',
    alias: 'store.CategoryValueStore',

    requires: [
        'MyApp.model.CategoryDisplayModel'
    ],
     config: {
        model: 'MyApp.model.CategoryDisplayModel',
        storeId: 'categoriesvaluestore',

    proxy: {
        type: 'rest',
        url: 'http://horror/myapp/api/word/searched_words/catID/'+ 1+'/'+ SDSILLYTOKEN+'/'+650773253e7f157a93c53d47a866204dedc7c363,
        noCache: false,           
        reader: {
            type: 'json',
            rootProperty: ''
        }  }    }
});
Ext.define("MyApp.view.ArchitectureDisplayMain", {
  extend: 'Ext.Container',  
  alias: "widget.architecturewords", 

  config: {
   {      

       xtype: 'list',
       scrollable: true,       
       itemId: 'demolist',          
            itemTpl: [
            '<div><tpl for="data"><ul class="catList">{name} -test- {category}</ul> <ul>{author}</ul></tpl></div>'
            ],
            store: 'categoriesvaluestore',
          }
          }
          });
  Ext.define('MyApp.model.CategoryModelMenu', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'cat_id',
           'category_name',
        ],

        belongsTo: "MyApp.model.CategoryModel"
    }
}); 
Ext.define('MyApp.view.Category', {
    extend: 'Ext.List',
   alias: "widget.category", 
    config: {
        title: 'Stores',
        cls: 'category-data',
        scrollable: false,
        store: 'CategoryStore',
        itemTpl: [

        '<div class="categoryListings">',
          '<tpl for="data">',
          '<span onClick="catOption({cat_id})">{category_name}</span> ',
          '</tpl>',
          '</div>',

        ].join('')
    }
  //}
});

function catOption(id){

  console.log("ID--"+id);
var  tokan= '650773253e7f157a93c53d47a866204dedc7c363';
     Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);  
         Ext.Viewport.add([

             { xtype: 'wordsview' }

             ]);  

} and others
如何设置上述url、动态、cat id和令牌可能有所不同。

但当我将这些设置在存储中时,它会起作用

Ext.define('MyApp.store.ArchitectureDisplayStore',{
extend: 'Ext.data.Store', 
requires:[
'MyApp.view.Main'
],
config:
{
    model: 'MyApp.model.CategoryDisplayModel',
    autoLoad:true,
    id:'Category',
    proxy:
    {
        type: 'ajax',
        url : 'http://horror/myapp/api/word/searched_words/catID/1/SDSILLYTOKEN/650773253e7f157a93c53d47a866204dedc7c363', // file containing json data
          reader:
        {
                rootProperty:''
        }  } }
});
在视图中,我将获取列表中的值设置为:

Ext.define('MyApp.model.CategoryDisplayModel', {
    extend: 'Ext.data.Model',
    requires: ['MyApp.model.CategoryDisplayModelMenu'],
    config: {
        fields: [
         {name:'data', mapping: 'data'},
            {name:'name'},
            {name: 'category'},
            {name: 'author'},
        ],
    }
});
Ext.define('MyApp.store.CategoryValueStore', {
    extend: 'Ext.data.Store',
    alias: 'store.CategoryValueStore',

    requires: [
        'MyApp.model.CategoryDisplayModel'
    ],
     config: {
        model: 'MyApp.model.CategoryDisplayModel',
        storeId: 'categoriesvaluestore',

    proxy: {
        type: 'rest',
        url: 'http://horror/myapp/api/word/searched_words/catID/'+ 1+'/'+ SDSILLYTOKEN+'/'+650773253e7f157a93c53d47a866204dedc7c363,
        noCache: false,           
        reader: {
            type: 'json',
            rootProperty: ''
        }  }    }
});
Ext.define("MyApp.view.ArchitectureDisplayMain", {
  extend: 'Ext.Container',  
  alias: "widget.architecturewords", 

  config: {
   {      

       xtype: 'list',
       scrollable: true,       
       itemId: 'demolist',          
            itemTpl: [
            '<div><tpl for="data"><ul class="catList">{name} -test- {category}</ul> <ul>{author}</ul></tpl></div>'
            ],
            store: 'categoriesvaluestore',
          }
          }
          });
  Ext.define('MyApp.model.CategoryModelMenu', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'cat_id',
           'category_name',
        ],

        belongsTo: "MyApp.model.CategoryModel"
    }
}); 
Ext.define('MyApp.view.Category', {
    extend: 'Ext.List',
   alias: "widget.category", 
    config: {
        title: 'Stores',
        cls: 'category-data',
        scrollable: false,
        store: 'CategoryStore',
        itemTpl: [

        '<div class="categoryListings">',
          '<tpl for="data">',
          '<span onClick="catOption({cat_id})">{category_name}</span> ',
          '</tpl>',
          '</div>',

        ].join('')
    }
  //}
});

function catOption(id){

  console.log("ID--"+id);
var  tokan= '650773253e7f157a93c53d47a866204dedc7c363';
     Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);  
         Ext.Viewport.add([

             { xtype: 'wordsview' }

             ]);  

} and others

编辑:

Ext.define('MyApp.model.CategoryDisplayModel', {
    extend: 'Ext.data.Model',
    requires: ['MyApp.model.CategoryDisplayModelMenu'],
    config: {
        fields: [
         {name:'data', mapping: 'data'},
            {name:'name'},
            {name: 'category'},
            {name: 'author'},
        ],
    }
});
Ext.define('MyApp.store.CategoryValueStore', {
    extend: 'Ext.data.Store',
    alias: 'store.CategoryValueStore',

    requires: [
        'MyApp.model.CategoryDisplayModel'
    ],
     config: {
        model: 'MyApp.model.CategoryDisplayModel',
        storeId: 'categoriesvaluestore',

    proxy: {
        type: 'rest',
        url: 'http://horror/myapp/api/word/searched_words/catID/'+ 1+'/'+ SDSILLYTOKEN+'/'+650773253e7f157a93c53d47a866204dedc7c363,
        noCache: false,           
        reader: {
            type: 'json',
            rootProperty: ''
        }  }    }
});
Ext.define("MyApp.view.ArchitectureDisplayMain", {
  extend: 'Ext.Container',  
  alias: "widget.architecturewords", 

  config: {
   {      

       xtype: 'list',
       scrollable: true,       
       itemId: 'demolist',          
            itemTpl: [
            '<div><tpl for="data"><ul class="catList">{name} -test- {category}</ul> <ul>{author}</ul></tpl></div>'
            ],
            store: 'categoriesvaluestore',
          }
          }
          });
  Ext.define('MyApp.model.CategoryModelMenu', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'cat_id',
           'category_name',
        ],

        belongsTo: "MyApp.model.CategoryModel"
    }
}); 
Ext.define('MyApp.view.Category', {
    extend: 'Ext.List',
   alias: "widget.category", 
    config: {
        title: 'Stores',
        cls: 'category-data',
        scrollable: false,
        store: 'CategoryStore',
        itemTpl: [

        '<div class="categoryListings">',
          '<tpl for="data">',
          '<span onClick="catOption({cat_id})">{category_name}</span> ',
          '</tpl>',
          '</div>',

        ].join('')
    }
  //}
});

function catOption(id){

  console.log("ID--"+id);
var  tokan= '650773253e7f157a93c53d47a866204dedc7c363';
     Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);  
         Ext.Viewport.add([

             { xtype: 'wordsview' }

             ]);  

} and others
Ext.define('MyApp.view.Category'{
扩展:“Ext.List”,
别名:“widget.category”,
配置:{
标题:“商店”,
cls:“类别数据”,
可滚动:false,
商店:“分类商店”,
第三方物流:[
'',
'',
“{category_name}”,
'',
'',
].加入(“”)
}
//}
});
功能选项(id){
console.log(“ID--”+ID);
var tokan='650773253e7f157a93c53d47a866204dedc7c363';
Ext.Viewport.remove(Ext.Viewport.getActiveItem(),true);
Ext.Viewport.add([
{xtype:'wordsview'}
]);  
}及其他
在wordsview中,我喜欢显示单击类别的各个单词。

这是确定的,当单击此id p1的第一项时,将显示下一个视图


请告诉我,如何根据其类别id和令牌获取动态数据。请给出一些解决方案。提前谢谢。

如果我理解正确的话

假设您在localStorage中有类别id和令牌

你可以这样做

proxy:
{
   type: 'ajax',
   url : 'http://horror/myapp/api/word/searched_words/catID/'+localStorage.catId+'/SDSILLYTOKEN/'+localStorage.token,
     reader:{
       rootProperty:''
     }  
} 

照我说的做。那是更好的办法。。像

function catOption(id){
  console.log("ID--"+id);
  var  token= '650773253e7f157a93c53d47a866204dedc7c363';

    var url = 'http://horror/myapp/api/word/searched_words/catID/'+id+'/SDSILLYTOKEN/'+token;

    Ext.getStore("categoriesvaluestore").getProxy().setUrl(url); 
    Ext.getStore("categoriesvaluestore").load();

     Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);  
     Ext.Viewport.add({ xtype: 'wordsview' });  
}

从您的视图或任何其他位置访问您的商店时,您可以通过以下方式手动更改Url:

var stProxy = Ext.StoreMgr.get("myStore").getProxy();
stProxy.setUrl("http://the.new.url");
Ext.StoreMgr.set("myStore").setProxy(stProxy);
--


场景中的特殊问题是,您可能必须手动填充列表。如果希望列表包含使用不同URL调用同一存储的结果,我建议构建一个新的本地存储,加载所有迭代的内容。然后将列表“store”属性设置为这个全局存储。

我不明白,如何从一个视图到另一个视图获取catId和令牌。视图中有catId和令牌值!!?是的,我有。但我不知道如何将catid和令牌从视图传递到存储区。好的,请查看编辑中的问题。好的,我可以在catOption函数中查看catid。。因此,在localStorage中设置catId。。像这样的'localStorage.catID=id;'在catOption函数中。但我找不到代币。。无论如何,对令牌执行相同的操作。。并设置我发布的url