2013-10-31 8 views
10

सरल सवाल अगर मैं अपने नियंत्रक में इस है:एनजी दोहराना आइटम के लिए विभाजित?

$scope.somedata = 'Item 1, Item 2'; // set from something else 

वहाँ मेरे विचार के लिए somedata विभाजित करने के लिए एक ngRepeat अभिव्यक्ति में एक तरीका है? कुछ की तरह:

<div ng-repeat="item in somedata | split(',')">{{item}}</div> 

जो काम नहीं करता ...

या मैं

$scope.somedata = 'Item 1, Item 2'; // set from something else 
$scope.items = somedata.split(','); 

और फिर

<div ng-repeat="item in items>{{item}}</div> 

करने के लिए मुझे लगता है कि मैं वास्तव में नहीं समझ रहा हूँ की क्या ज़रूरत है AngularJS में एक अभिव्यक्ति में मैं क्या कर सकता हूं।

उत्तर

15

| का दायां स्ट्रिंग का नाम फ़िल्टर के नाम पर हल किया जाता है (आमतौर पर वे स्ट्रिंग स्वरूपण फ़िल्टर होते हैं, लेकिन कोणीय टीम ने filter फ़िल्टर भी प्रदान किया है, जो एक फ़िल्टर किए गए सरणी को लौटाता है (थोड़ा भ्रामक क्योंकि दोनों एक ही नाम) आप आप क्या चाहते हैं पूरा करने के लिए अपने स्वयं के विभाजन फ़िल्टर बना सकते हैं:।

angular.module('myFilters', []). 
    filter('split', function() { 
    return function(input, delimiter) { 
     var delimiter = delimiter || ','; 

     return input.split(delimiter); 
    } 
    }); 

तुम इतनी तरह फिल्टर इस्तेमाल कर सकते हैं:

<div ng-repeat="item in somedata | split"> 

या एक परिसीमक निर्दिष्ट:

<div ng-repeat="item in somedata | split:,"> 

उपरोक्त छद्म कोड पर विचार करें क्योंकि मैंने इसका परीक्षण नहीं किया है।

Le plunker: http://plnkr.co/edit/hk6F0Y6p5YAXv6fyXfSz?p=preview

+0

नकल करने यह एक बढ़िया विवरण है, धन्यवाद! – Nicros

26

मुझे लगता है मैं कर रहा हूँ बहुत देर हो चुकी, लेकिन क्यों बस ऐसा नहीं:

<div ng-repeat="item in somedata.split(',')">{{item}}</div> 

काम करता है ठीक।

JSBin सबूत के लिए!

+2

यह उत्तर समस्या को आसानी से हल करता है; और मैंने सोचा कि एक फ़िल्टर को परिभाषित करना आसान होगा लेकिन अंत में यह एक अच्छा समाधान है। यह नहीं पता कि क्या यह चीजों को करने का "कोणीय" तरीका है लेकिन मुझे यह पसंद है। – Eolis

+0

यह सबसे अच्छा –

+0

सरल समाधान है! यह सही जवाब होना चाहिए – rh0x

0

यहाँ

angular.module('myFilters', []). 
    filter('split', function() { 
    return function(input, delimiter) { 
     //var delimiter = delimiter || ','; 

     return input.split(delimiter); 
    } 
    }); 

सीमांकक टिप्पणी की तुम इतनी तरह फिल्टर इस्तेमाल कर सकते हैं: कारण दुर्घटना से बचने के लिए $ सूचकांक द्वारा यह भी कहा ट्रैक मूल्यों

<div ng-repeat="item in somedata | split:',' track by $index"> 
संबंधित मुद्दे