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