2013-07-03 24 views
41

単にangularJSで文字列を分割できるかどうかを知りたかったのです。 私は、私は関数を呼び出し、入力とngの変更について多くのことを見てきたことangularJSで文字列を分割する方法

{{test[0] | split(',')}} 
{{test[1] | split(',')}} 

のようなものをやってみたかった私のコントローラでと私の見解で私の

$scope.test = "test1,test2"; 

、 を持っていますng-listで文字列や何かを分割するコントローラでは、私の場合は何も動作しません。

すべてです。

+0

分割結果として '{{}}'式を出力する必要がありますか? '{{}}'式は文字列として扱われますが、私は 'split'が配列を返すようにしたいと思います。 – Raibaz

+2

文字列を分割するためにプレーンJavaScriptを使用できませんか? http://www.w3schools.com/jsref/jsref_split。asp –

+0

[String.splitに関するより良い記事](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)、申し訳ありませんLukas。 – rlemon

答えて

79

にあなたがその機能をラップすることをお勧めします私のコントローラでは、溶液、本当に基本的な1 .. を見つけましたこの方法で、すべてのコントローラにmySplit関数を置く必要はありません。あなたはもともとあなたが試すことができ

{{test | split:',':0}} 
{{test | split:',':0}} 

http://plnkr.co/edit/NA4UeL

+7

引数は ':'で区切られている必要があります: '{{式|フィルタ:argument1:argument2:...}} 'このように、この場合、{{test |分割: "、":0}} ' [新しい文書](http://docs.angularjs.org/guide/filter)私は過去6ヶ月のうちにこれがいつか変わったと思っています – ross

+0

これはアレイでもうまくいくかどうか誰かが知ることができますか? –

42

たTHX男は、私は最終的に私は

$scope.mySplit = function(string, nb) { 
    var array = string.split(','); 
    return array[nb]; 
} 

を持っており、私の見解

{{mySplit(string,0)}} 
+3

あなた自身で解決策を見つけることをお祝いします。あなたはあなた自身の答えを受け入れることを考慮する必要があります。 – Sprottenwels

+6

これは、カスタムフィルタを作成することでよりうまく処理できます - https://docs.angularjs.org/guide/filter – Larry

+0

上記の答えのようなフィルタを使用する方が良いでしょう – hakazvaka

25

@http://docs.angularjs.org/guide/filter(感謝ロス)

Plunkrではより多くの情報を意図したように、ここからは一例

angular.module('myModule', []) 
    .filter('split', function() { 
     return function(input, splitChar, splitIndex) { 
      // do some bounds checking here to ensure it has that index 
      return input.split(splitChar)[splitIndex]; 
     } 
    }); 

ためには、フィルタを使用することができますこのようなもの:

$scope.test = "test1,test2"; 
{{test.split(',')[0]}} 

あなたは{{test.split(',')[0]}}

を試してみて、あなたがここに{{test.split(',')[1]}}

を試しながら、あなたは "TEST2" を取得する一方、今あなたが "test1の" でしょうが、私のplnkrです:

http://plnkr.co/edit/jaXOrZX9UO9kmdRMImdN?p=preview

+1

かなり明確なveljasijeです。ディレクティブまたは関数を使用する代わりに、彼はビュー内で文字列オブジェクトのsplitメソッドを直接使用しました。キッス。 – KeizerBridge

+0

@veljasijeちょうど行くとリンク、plunkr http://plnkr.co/edit/jaXOrZX9UO9kmdRMImdN?p=preview –

+0

正確に@KeizerBridge、あなたの感謝のおかげで... ...-) –

0

これを試すことができます:

$scope.testdata = [{ 'name': 'name,id' }, {'name':'someName,someId'}] 
$scope.array= []; 
angular.forEach($scope.testdata, function (value, key) { 
    $scope.array.push({ 'name': value.name.split(',')[0], 'id': value.name.split(',')[1] }); 
}); 
console.log($scope.array) 

後で使用するためにデータを保存して使用することによって、それをアクセスもできます。この方法で、このようにNGをリピート:私はこれが誰かを助け願ってい

<div ng-repeat="item in array">{{item.name}}{{item.id}}</div> 



Plunkerリンク:here
すべてのクレジットを上記の答えから@jwpfoxと@Mohideen ibn Mohammedに行ってください。