2013-04-14 4 views
8

मैं AngularJS का उपयोग कर रहा हूं और कुछ परिणामों के माध्यम से दोहराने के लिए दोहराना चाहता हूं। खोज के लिए एक फिल्टर भी लागू किया गया है।एंगुलरजेएस डिस्प्ले संदेश जब वस्तु दोहराने में खाली होती है

दो की स्थिति है कि मैं संभाल करने में सक्षम होना चाहते हैं और सबसे "कोणीय" जिस तरह से देख रहा हूँ नहीं है।

पहली शर्त यह है कि यदि कोई परिणाम शुरू करने के लिए कोई परिणाम नहीं है।

दूसरी स्थिति यह है कि फ़िल्टर का उपयोग करते समय, कोई परिणाम नहीं लौटाया जाता है।

मैं this देखा था, जो है जैसे कि यह पर्याप्त होगा और मैं एक शर्त के लिए एक बना सकते हैं लगता है। हालांकि, नियंत्रक में कोड की आवश्यकता के बिना, इन शर्तों को संभालने के लिए मूल कोणीय निर्देशों के साथ वैसे भी है?

धन्यवाद!

उत्तर

12

आप सरणी फ़िल्टर्ड पर ngSwitch निर्देश जोड़ सकते हैं और यह लंबाई के आधार पर अलग अलग एचटीएमएल प्रदर्शित कर सकते हैं।

jsFiddle

HTML:

<div ng-app ng-controller="Ctrl"> 
Search: <input ng-model="searchText"> 
<div ng-init="filtered = (friends | filter:searchText)"> 
    <div>{{(friends | filter:searchText).length}}</div> 
    <div ng-switch="(friends | filter:searchText).length"> 
     <span ng-switch-when="0">Nothing was found</span> 
     <table id="searchTextResults" ng-switch-default> 
      <tr> 
       <th>Name</th> 
       <th>Phone</th> 
      </tr> 
      <tr ng-repeat="friend in filtered | filter:searchText"> 
       <td>{{friend.name}}</td> 
       <td>{{friend.phone}}</td> 
      </tr> 
     </table> 
    </div> 
</div> 

जे एस:

function Ctrl($scope) { 
$scope.searchText = ""; 
$scope.friends = [{ 
    name: 'John', 
    phone: '555-1276' 
}, { 
    name: 'Mary', 
    phone: '800-BIG-MARY' 
}, { 
    name: 'Mike', 
    phone: '555-4321' 
}, { 
    name: 'Adam', 
    phone: '555-5678' 
}, { 
    name: 'Julie', 
    phone: '555-8765' 
}]; 
} 

एक अन्य विकल्प नियंत्रक में सीधे मित्र सरणी पर $ फिल्टर ("फिल्टर") लागू करने के लिए है, जो HTML मार्कअप छोटा जाएगा ।

+0

सही काम करता है, धन्यवाद! – dzm

+0

मैंने नोटिस किया कि कभी-कभी "कुछ भी नहीं मिला" संदेश ताज़ा/लोड होने पर त्वरित रूप से झिलमिलाहट करेगा। मैंने इसमें एक एनजी-क्लोक जोड़ा है, लेकिन मदद नहीं करता है। कोई विचार? धन्यवाद! – dzm

+0

आप डोम नोड्स के बजाय सीएसएस कक्षाओं को स्विच करने का प्रयास कर सकते हैं। डिफ़ॉल्ट रूप से छिपा "कुछ भी नहीं मिला" बनाएं और इसे सरणी लंबाई के अनुसार दिखाएं। –

6

आप संदेश दिखाने के लिए इस वाक्य रचना का उपयोग कर सकते जब कोई डेटा नहीं मिला

<p ng-show="(friends | filter:searchText).length==0">Sorry No Result Found</p>` 

कहाँ मित्र JSON ऑब्जेक्ट है।

1

ngRepeat आप के बाद सभी फिल्टर संसाधित किया गया है जिसके परिणामस्वरूप आइटम के लिए एक उपनाम देने के लिए अनुमति देता है। फिर आप अपना संदेश प्रदर्शित करने के लिए इस उपनाम का उपयोग कर सकते हैं।

<p ng-repeat="friend in friends | filter:searchText as displayedFriends"> 
    {{friend.name}} 
</p> 
<p ng-if="!displayedFriends.length"> 
    Nothing was found 
</p> 
संबंधित मुद्दे