如何使用商店在 sencha touch 中设置动态 url?
Posted
技术标签:
【中文标题】如何使用商店在 sencha touch 中设置动态 url?【英文标题】:How to set dynamic url in sencha touch using store? 【发布时间】:2013-07-24 05:13:55 【问题描述】:我是这个平台的新手,现在我无法使用类别 ID 和令牌设置动态 url。
我想要什么: 我列出了不同的项目,它们具有不同的 id 但相同的令牌,令牌(令牌是同一个用户)从登录阶段获得。我想根据服务器的类别 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: ''
);
上面的url如何设置,动态的,cat id和token可能不同。
但是当我在商店里设置它们时它会起作用
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:''
);
在 View 中,我设置了这样的列表获取值:
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.model.CategoryModel',
extend: 'Ext.data.Model',
requires: ['MyApp.model.CategoryModelMenu'],
config:
fields: [
name:'data', mapping: 'data',
name: 'cat_id',
name: 'category_name',
],
);
编辑:
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
在wordview中,我喜欢显示点击类别的各个单词。
没关系,点击这个,id p1的第一项,显示下一个视图。
请告诉我,如何根据类别 ID 和令牌获取动态数据。请给出一些解决方案。谢谢你提前。
【问题讨论】:
【参考方案1】:如果我理解正确的话
假设您在 localStorage 中是否有类别 ID 和令牌。
你可以这样做
proxy:
type: 'ajax',
url : 'http://horror/myapp/api/word/searched_words/catID/'+localStorage.catId+'/SDSILLYTOKEN/'+localStorage.token,
reader:
rootProperty:''
或
按照@Alex posted 做。这是更好的方法.. 喜欢
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' );
【讨论】:
我不明白,如何从视图到存储获取 catId 和 Token。 您有 catId 和 Token 值在视图中!!? 是的,我有。但是我不知道如何将 catid 和令牌从视图传递到存储。 好的,请在编辑我的问题中查看。 好的,我可以在 catOption 函数中看到 catId.. 所以在 localStorage 中设置 catId.. 像这样 'localStorage.catID = id;'在 catOption 函数中。但我找不到令牌..无论如何对令牌做同样的事情..并设置我发布的网址【参考方案2】:从您的视图或其他任何地方访问您的商店时,您可以通过这种方式动态更改 URL:
var stProxy = Ext.StoreMgr.get("myStore").getProxy();
stProxy.setUrl("http://the.new.url");
Ext.StoreMgr.set("myStore").setProxy(stProxy);
--
您的场景中的特殊问题是您可能必须手动填充您的列表。如果您希望 List 包含使用不同 URL 调用同一 Store 的结果,我建议构建一个新的本地 Store 加载所有迭代的内容。然后将 List "store" 属性设为这个全局 Store。
【讨论】:
以上是关于如何使用商店在 sencha touch 中设置动态 url?的主要内容,如果未能解决你的问题,请参考以下文章