angularjs ui-bootstrap पृष्ठांकन आरंभीकरण पर वर्तमान पृष्ठ रीसेट करना




pagination angular-ui-bootstrap (5)

मैं यूआई-बूटस्ट्रैप (कोणीय-बूटस्ट्रैप) पुस्तकालय से पृष्ठांकन निर्देश का उपयोग कर रहा हूं। मैं एक मुद्दा है जब यह आरंभ करता है। मेरा समस्या तब होती है जब मैं किसी विशिष्ट पृष्ठ पर url के माध्यम से नेविगेट करता हूं।

क्या हो रहा है कि मेरा नियंत्रक $ राज्यप्रेम से सही पृष्ठ के साथ आरंभीकृत करता है, तब पृष्ठांकन निर्देश प्रारंभिक होता है और एनजी-परिवर्तन फ़ंक्शन को ट्रिगर करता है जो पृष्ठ 1 को रीसेट कर रहा है। अब चयन-पृष्ठ का उपयोग नहीं किया जाता है, क्या है? पेज बदलने के लिए केवल उपयोगकर्ता क्लिक पर कब्जा करने का एक तरीका है? आदर्श रूप से मैं यह चाहूंगा कि नियंत्रक के समक्ष निर्देश को आरंभ कर दिया जाए ताकि मेरे पृष्ठ को रीसेट न मिले। पहले ही, आपका बहुत धन्यवाद।

यदि आवश्यक हो तो मैं कोड को शामिल कर सकता हूं, लेकिन मुझे लगता है कि मेरे प्रश्न के लिए कोड ब्लॉक की आवश्यकता नहीं है।


यदि आप पृष्ठ लोड होने पर पृष्ठ सेट करना चाह रहे हैं, तो यहां बताए अनुसार मॉडल को लोड करें।

वेबसाइट से:

<pagination total-items="totalItems" ng-model="currentPage" ng-change="pageChanged()">
</pagination>

मुझे यकीन है कि आप पहले ही वहां देख चुके हैं, इसलिए यदि मॉडल को नियंत्रक के प्रारंभ पर ठीक से सेट नहीं किया जा रहा है, तो आपको स्पष्ट रूप से समस्याएं होने वाली हैं। ऐसा भी मामला है जहाँ यह संभवतः किसी अन्य स्थान पर अधिलेखित किया जा रहा है जहाँ आप $scope.currentPage का उपयोग कर रहे हैं। यद्यपि आप यह महसूस कर सकते हैं कि यह बिना कोड के आसान है, मैं सुझाव दूंगा कि आप जिस HTML और कोणीय नियंत्रक की बात कर रहे हैं। आशा करता हूँ की ये काम करेगा!


इसलिए मुझे कोणीय-बूटस्ट्रैप कोड में नीचे ड्रिलिंग के बाद एक समाधान मिला। उनके कोड में TotalPages पर एक घड़ी होती है जो यह जांचती है कि वर्तमान पृष्ठ कुलपेज मान से अधिक है या नहीं।

कोणीय-बूटस्ट्रैप कोड:

if ( $scope.page > value ) {
  $scope.selectPage(value);
} else {
  ngModelCtrl.$render();
}

क्या हो रहा था अगर मैंने पेज 3 पर पेज को रीफ्रेश किया (उदाहरण के लिए) मेरा नियंत्रक उस पेज के लिए आइटमों को फिर से लोड कर रहा था जिससे अस्थायी रूप से कुल-आइटम 0 हो गए और कुलपतियों की गणना 1 के रूप में की जाने लगी। इसने घड़ी और उपरोक्त कोड को ट्रिगर किया।

मेरा समाधान राज्य के समाधान में वस्तुओं को लोड करना था ताकि कुल-आइटम (और बदले में TotalPages) हमेशा सटीक हो।


राज्य रिज़ॉल्यूशन का एक विकल्प एक बार ज्ञात मूल्य मॉड्यूल में कुल आइटम सेट करना होगा। वही डीलियो, वास्तव में मैं सिर्फ आपके उपरोक्त उत्तर पर टिप्पणी करना चाहता था, लेकिन मेरे पास आवश्यक बिंदु नहीं थे। स्पष्टीकरण के लिए धन्यवाद, मेरी मदद की!


ng-if निर्देश मेरे लिए उम्मीद के मुताबिक काम नहीं करता था (मैंने controllerAs सिंटैक्स का उपयोग नहीं किया था): $scope.currentPage का उपयोग नहीं कर सका था। $scope.currentPage वैरिएबल चर अब और नहीं। इसका समाधान ng-model="$parent.currentPage" बजाय ng-model="$parent.currentPage" का उपयोग करना था।

<uib-pagination ng-if="totalItems"
                total-items="totalItems"
                items-per-page="itemsPerPage"
                ng-model="$parent.currentPage">
</uib-pagination>

यदि आप डेटा का उपयोग करने के लिए राज्य का उपयोग नहीं करना चाहते हैं तो आप बस एक ng-if निर्देश को पेजिनेटर पर जोड़ सकते हैं। total-items $scope.total_count की विशेषता के लिए बाध्य करने के लिए $scope.total_count का उपयोग किया जाता है, आप निम्न की तरह कुछ कर सकते हैं:

<pagination data-ng-if="total_count"
            total-items="total_count"
            ng-model="applied_filters.page"
            max-size="maxSize"
            class="pagination-sm"
            boundary-links="true"
            rotate="false"
            class="nomargin"
            num-pages="numPages"></pagination>

इस तरह से निर्देश हमेशा आरंभिक होता है जब आपके पास सर्वर से कुल संख्या होती है और करंटपेज टोटलपेज से अधिक नहीं होगा







angular-ui-bootstrap