2013-07-31 7 views
6

के साथ फिल्टर से अधिक मैं एनजी-दोहराना टैग पर फ़िल्टर से अधिक लागू कर रहा हूं। मैं निम्नलिखित कस्टम फ़िल्टर समारोह लिखा है:कोणीय: ng-repeat

$scope.priceRangeFilter = function (location) { 
    return location.price >= $scope.minPrice; 
}; 

और मैं निम्न HTML कोड में उपयोग:

<div ng-repeat="m in map.markers | filter:priceRangeFilter"> 

सबसे अच्छा तरीका क्या एनजी-दोहराने टैग का एक ताज़ा को गति प्रदान करने के लिए है जब $ गुंजाइश .minPrice अद्यतन किया गया है?

+0

रूप SZA द्वारा कहा गया यह स्वचालित रूप से ताज़ा करता है, मैं minPrice में एक गलती के रूप में बाध्यकारी बना दिया। मैं क्षमाप्रार्थी हूं। – Julien

उत्तर

10

यह स्वत: होना चाहिए। जब $scope.minPrice बदल दिया जाता है, तो पुनरावर्तक स्वचालित रूप से अपडेट हो जाएगा।

function Ctrl($scope, $timeout) { 
    $scope.map = [{ 
     name: 'map1', 
     price: 1 
    }, { 
     name: 'map2', 
     price: 2 
    }, { 
     name: 'map3', 
     price: 3 
    }]; 
    $scope.minPrice = 0; 
    $scope.priceRangeFilter = function (location) { 
     return location.price >= $scope.minPrice; 
    }; 

    $timeout(function() { 
     $scope.minPrice = 1.5; 
    }, 2000); 
} 

Demo on jsFiddle

7

एंजुलरजेज़ फ़िल्टर एपीआई का उपयोग करके फिल्टर सेवा के रूप में फ़िल्टर बनाएं, और पैरामीटर के रूप में minPrice जोड़ें।

filter('priceRangeFilter', function (location) { 
    return function (location, minPrice) { 
     ... 
    } 
}) 

और टेम्पलेट

<div ng-repeat="m in map.markers | priceRangeFilter:minPrice"> 

में इस बेला में एक उदाहरण देखें: http://jsfiddle.net/Zmetser/BNNSp/1/

+0

मैं केवल एक पंजीकृत फ़िल्टर केवल तभी बनाउंगा जब यह वास्तव में पुन: प्रयोज्य हो या मैं एक ही प्रकार की इकाई के फ़िल्टरिंग को कई स्कॉप्स में फ़िल्टर कर रहा हूं जो फिल्टर फ़ंक्शन –

+0

साझा नहीं कर सकता है आप ऑब्जेक्ट प्रॉपर्टी की तुलना में सुई पास कर सकते हैं करने के लिए, और आपके ऑब्जेक्ट्स के ऐरे के लिए एक पुन: प्रयोज्य जीटी फ़िल्टर है। इस तरह आपका नियंत्रक हल्का होगा। लेकिन आप भी सही हैं। – Oliver

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