2012-05-13 28 views
7

क्या किसी को ऐसे उदाहरण का पता है या पता है जो एक जीडब्ल्यूटी आरपीसी कॉल के माध्यम से सेन्चा जीएफटी 3.0 का उपयोग कर लिस्टस्टोर में डेटा लोड करने का प्रदर्शन करता है? मुझे पता है कि 2.x संस्करणों में इस्तेमाल किए गए मॉडलडेटा और बीनमोडेल इंटरफेस का उपयोग करने के कई उदाहरण हैं, लेकिन 3.0 इन इंटरफेस का उपयोग करने की आवश्यकता से दूर है और माना जाता है कि वे पीओजेओ ऑब्जेक्ट्स को क्लासप्रोपर्टी इंटरफ़ेस को लागू करने वाले वर्गों का उपयोग करने में लोड होने की अनुमति देते हैं।एक जीडब्ल्यूटी आरपीसी कॉल का उपयोग कर सेन्चा जीXT (3.0) लिस्टस्टोर में डेटा लोड करने के लिए सीधा उदाहरण?

मैंने 3.0 एक्सप्लोरर में RequestFactoryBinding उदाहरण और RequestFactory ग्रिड उदाहरण देखा है, लेकिन वे कस्टम डेटा प्रॉक्सी और रिसीवर के उपयोग को प्रदर्शित करने के लिए प्रतीत होते हैं। मैं उन उदाहरणों में कोड की समीक्षा करने से मानता हूं कि इन तकनीकों/कक्षाओं की आवश्यकता हो सकती है लेकिन यह कहीं भी स्पष्ट नहीं है। यह संभव है कि अधिक दस्तावेज आने वाले हैं लेकिन अब तक मैं उस javadocs और एक्सप्लोरर से परे कुछ भी नहीं ढूंढ पाया है जिसमें उदाहरण विधियों में उपयोग किए जाने वाले कुछ स्रोत वर्गों की कमी है।

नीचे दोनों उदाहरणों के लिए लिंक।

RequestFactoryBinding उदाहरण: http://www.sencha.com/examples/#ExamplePlace:requestfactorybinding

RequestFactory ग्रिड उदाहरण: http://www.sencha.com/examples/#ExamplePlace:requestfactorygrid

उत्तर

8

DataProxy और Loader ज्यादातर/छँटाई छानने/पेजिंग के लिए सर्वर पर निर्भर एक की सुविधा के लिए) का उपयोग किया जाता है, या ख) के बीच पुन: उपयोग डेटा के समान टुकड़ों तक पहुंच प्राप्त करने के लिए आवेदन के कुछ हिस्सों। उन मामलों में वे आवश्यक नहीं हैं (2.x में) जहां ग्राहक केवल एक बार डेटा लोड करता है, या जहां मैनुअल स्टोर प्रबंधन किया जाता है।

विभिन्न स्टोर लोडिंग कक्षाएं (ListStoreBinding, LoadResultListStoreBinding) आंतरिक रूप से प्रदर्शित करती है कि सूचीस्टोर को कैसे खिलाया जा सकता है। यह पहली तरह से आप अपने आरपीसी कॉलबैक या RequestFactory रिसीवर में onSuccess विधि से दुकान में मौजूदा आइटम को बदलने के लिए अनुमति देता है:

List<MyData> newItems = ...;//response from server 
ListStore<MyData> store = ...;//current store to replace/update 
store.replaceAll(newItems); 

तो केवल एक बार लोड हो रहा है, या केवल जोड़कर, की जगह नहीं, अन्य विधि का इस्तेमाल किया जाना चाहिए :

store.addAll(newItems); 

आइटम एक store.add का उपयोग करके एक जोड़ा जा सकता है, हालांकि यह आइटम प्रति एक घटना का परिणाम देगा, और बचा जाना चाहिए।

संपादित करें: इसके अलावा, और यह 2.x से पूरी तरह स्पष्ट नहीं हो सकता है, लेकिन डेटा के लिए कोई सुपरक्लास/इंटरफ़ेस आवश्यक नहीं है। ValueProvider केवल मॉडल के छेड़छाड़ के लिए बाहरी अमूर्तता के रूप में उपयोग किया जाता है - मूल्यों को सामान्य रूप से किसी भी प्रकार के मॉडल से कैसे पढ़ा या सेट किया जाता है। PropertyAccess इंटरफ़ेस ValueProvider (और अन्य) उदाहरणों को केवल संपत्ति नाम से उत्पन्न करने की अनुमति देता है कि मूल्य बीन एक्सेसर्स का उपयोग करने से प्राप्त/सेट हो जाएंगे। मूल्य लोड करने के लिए वैल्यूप्रोवाइडर प्रकार/उदाहरणों की आवश्यकता नहीं होती है, केवल डेटा विगेट्स के लिए डेटा प्रदर्शित करने के लिए, और उपयोगकर्ता द्वारा मूल्यों को संपादित करने के बाद संशोधन करने के लिए।


इन टुकड़ों को जानना, लोडर/प्रॉक्सी तंत्र डेटा को उसी मूल तरीके से लोड कर देगा। लोडर लोड होने पर उपयोग करने के लिए कौन सी सेटिंग (पेजिंग, फ़िल्टरिंग, और/या सॉर्टिंग) का उपयोग करने के लिए जिम्मेदार है, फिर लोड को ट्रिगर करना - विभिन्न उप-वर्गों में अलग-अलग जिम्मेदारियां हैं, अलग-अलग लोड कॉन्फ़िगरेशन प्रकार स्वीकार करते हैं, और विभिन्न परिणाम लौटाते हैं।DataProxy तब वह तंत्र है जो वास्तव में डेटा पर रखता है, जो सर्वर पर असीमित रूप से होता है, और लोडर को सूचित करता है जब परिणाम कॉलबैक के माध्यम से उपलब्ध होते हैं।

प्रश्न में सूचीबद्ध उदाहरण दोनों अनुरोध फ़ैक्टरी का उपयोग करते हैं, लेकिन कई उदाहरण हैं जो आरपीसी का उपयोग करते हैं, और केवल जेएसओएन या एक्सएमएल से कुछ लोडिंग का उपयोग करते हैं। http://www.sencha.com/examples/#ExamplePlace:paginggrid मुख्य डेटा लोड भागों इस प्रकार हैं:

// The rpc async instance 
final ExampleServiceAsync service = GWT.create(ExampleService.class); 

// As in Ext GWT 2, there is a convenience proxy for RPC to just pass the callback 
// directly to the RPC call. If you need a custom callback, just be sure to invoke 
// `callback.onSuccess` with the final result. 
RpcProxy<PagingLoadConfig, PagingLoadResult<Post>> proxy = new RpcProxy<PagingLoadConfig, PagingLoadResult<Post>>() { 
    @Override 
    public void load(PagingLoadConfig loadConfig, AsyncCallback<PagingLoadResult<Post>> callback) { 
    service.getPosts(loadConfig, callback); 
    } 
}; 
// ... 

// The loader itself has a reference to the proxy so that loader.load() results 
// in a round trip to the server, as outlined above. 
final PagingLoader<PagingLoadConfig, PagingLoadResult<Post>> loader = new PagingLoader<PagingLoadConfig, PagingLoadResult<Post>>(
    proxy); 
loader.setRemoteSort(true); 

// This last piece - instead of 2.x where the loader is a parameter to the store, 
// in 3 you directly wire the results of the loader to add the items into the 
// store, as discussed in the first half of this answer 
loader.addLoadHandler(new LoadResultListStoreBinding<PagingLoadConfig, Post, PagingLoadResult<Post>>(store)); 
+0

धन्यवाद, लेकिन शायद मैं अच्छी तरह से मेरे सवाल का शब्द ऐसा नहीं किया। मैं दुकानों के उपयोग से परिचित हूं और उनसे वस्तुओं को जोड़/हटा रहा हूं लेकिन मैं 3.x ऑब्जेक्ट्स और इंटरफेस का उपयोग करके लोडिंग प्रक्रिया का एक स्पष्ट उदाहरण नहीं ढूंढ पाया। मैं एक ऐसा उदाहरण नहीं ढूंढ पाया जो पूरी तरह से आरपीसी के माध्यम से डेटा अनुरोध शुरू करने के लिए 3.x क्षमताओं का उपयोग करता है, प्रतिक्रिया प्राप्त करता है और एक स्टोर में प्रतिक्रिया लोड करता है (आरपीसी कॉल -> प्रतिक्रिया -> लोडर -> स्टोर -> विजेट)। –

+0

क्षमा करें, मैंने सोचा था कि आपके द्वारा सूचीबद्ध उदाहरणों ने लोडर का उपयोग बहुत स्पष्ट कर दिया है - मैं भी लोडर के साथ उपयोग की व्याख्या करने के लिए उत्तर अपडेट करूंगा। –

0

FWIW मैं एक दूर से पृष्ठांकित और हल कर ग्रिड के एक GWTP Dispatch version में उछाल आया। एक कमांड पैटर्न मोड़ के साथ जीडब्ल्यूटी आरपीसी कौन सा है।

  • RpcProxy
  • PagingLoader
  • LoadResultListStoreBinding

और तरीकों लागू करने की आवश्यकता है:

मान लिया जाये कि आप ग्रिड से परिचित हैं, आप का एक उदाहरण की आवश्यकता होगी:

  • PagingLoader.setRemoteSort(true)
  • PagingLoader.addLoadHandler()
  • Grid.setLoader()
  • PagingToolBar.bind()

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^