1

私はこのプラットフォームを初めて使用します。現在、カテゴリ ID とトークンを使用して動的 URL を設定できません。

私が欲しいもの:IDは異なるが同じトークン、トークン(トークンは同じ1人のユーザー)をログインフェーズから取得するさまざまなアイテムをリストしています。サーバーからカテゴリ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、動的、猫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:''
        }  } }
});

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

wordsview では、クリックしたカテゴリのそれぞれの単語を表示するのが好きです。

これをクリックすると、id p1 の最初の項目が表示され、次のビューが表示されます。

カテゴリIDとトークンに応じて動的データを取得する方法を教えてください。解決策を教えてください。よろしくお願いします。

4

2 に答える 2

1

もし私があなたを正しく理解していたら

localStorage にカテゴリ ID とトークンがあるとします。

あなたはこのようにすることができます

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

また

@Alexが投稿したようにしてください。それはより良い方法です..のように

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' });  
}
于 2013-07-24T06:27:31.677 に答える
1

ビューまたはその他の場所からストアにアクセスする場合、次の方法で URL を動的に変更できます。

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

--

シナリオの特定の問題は、リストを手動で入力する必要がある場合があることです。異なる URL で同じ Store を呼び出した結果を List に含めたい場合は、すべての反復のコンテンツをロードする新しいローカル Store を構築することをお勧めします。次に、List の「store」プロパティをこのグローバル Store にします。

于 2013-07-24T11:10:19.903 に答える