2016-11-18 9 views
0

私は2つのスコープuserとuserGroupsを持っています。ngの繰り返しのための角度のあるjsフィルタ

$scope.user = [ 
{id: 1, username: 'Vasya1', group_id: 1}, 
{id: 2, username: 'Vasya2', group_id: 1}, 
{id: 3, username: 'Vasya3', group_id: 2} 
]; 

$scope.userGroups = [ 
{id: 1, groupname: 'name1'}, 
{id: 2, groupname: 'name2'} 
]; 

users.group_idはuserGroupsの外部キーです。私は各グループのユーザー範囲のフィルタを作成する必要があります。

<div ng-repeat="(gKey, g) in userGroups"> 
    <div ng-repeat="(uKey, u) in users"> 
    ... 
    </div> 
</div> 

フィルタを追加するにはどうすればよいですか?

+0

ng-ifを使用できますか?あなたは単に各物件の価値を望んでいないのですか? – Weedoze

+0

Weedoze、私はインデックスなしでスコープから削除することはできません。 –

+0

何ですか?何を削除しますか?あなたは何も削除していません – Weedoze

答えて

1

を助けるです。

var app = angular.module("sampleApp", []); 
 

 
app.controller("sampleController", ["$scope", 
 
    function($scope) { 
 
    $scope.users = [{ 
 
     id: 1, 
 
     username: 'Vasya1', 
 
     group_id: 1 
 
    }, { 
 
     id: 2, 
 
     username: 'Vasya2', 
 
     group_id: 1 
 
    }, { 
 
     id: 3, 
 
     username: 'Vasya3', 
 
     group_id: 2 
 
    }]; 
 

 
    $scope.userGroups = [{ 
 
     id: 1, 
 
     groupname: 'name1' 
 
    }, { 
 
     id: 2, 
 
     groupname: 'name2' 
 
    }]; 
 
    } 
 
]);
.group { 
 
    padding: 10px; 
 
} 
 
.group:nth-child(even) { 
 
    background-color: #cecece; 
 
    color: #212121; 
 
} 
 
.group:nth-child(odd) { 
 
    background-color: #989898; 
 
    color: #dedede; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script> 
 
<div ng-app="sampleApp"> 
 
    <div ng-controller="sampleController"> 
 
    <div ng-repeat="group in userGroups" class="group"> 
 
     Group Name: {{group.groupname}} 
 
     <div ng-repeat="user in users | filter: { group_id: group.id}"> 
 
     User Name: {{user.username}} 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

これは私に役立つSreekanthありがとうございます。 –

0

angular filterを参照してください。

var myApp = angular.module('myApp',[]); 
 
function MyCtrl($scope) { 
 
    $scope.selected="Not selected"; 
 
    $scope.user = [ 
 
     {id: 1, username: 'Vasya1', group_id: 1}, 
 
     {id: 2, username: 'Vasya2', group_id: 1}, 
 
     {id: 3, username: 'Vasya3', group_id: 2} 
 
    ]; 
 

 
    $scope.userGroups = [ 
 
     {id: 1, groupname: 'name1'}, 
 
     {id: 2, groupname: 'name2'} 
 
    ]; 
 
}
<div ng-app="myApp"> 
 
<div ng-controller="MyCtrl"> 
 
    <select ng-options="u.id as u.groupname for u in userGroups" ng-model="selected"></select> 
 
    <div ng-repeat="i in user | filter:{'group_id': selected}:true"> 
 
    User :{{i.username}} 
 
    </div> 
 
</div> 
 
    </div> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

・ホープこれはあなたが角度フィルタを使用し、それを達成することができ、あなたに

0

あなたは、なぜあなたは ``(gKey、g)を使用している二ng-repeat

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.users = [{ 
 
    id: 1, 
 
    username: 'Vasya1', 
 
    group_id: 1 
 
    }, { 
 
    id: 2, 
 
    username: 'Vasya2', 
 
    group_id: 1 
 
    }, { 
 
    id: 3, 
 
    username: 'Vasya3', 
 
    group_id: 2 
 
    }]; 
 

 
    $scope.userGroups = [{ 
 
    id: 1, 
 
    groupname: 'name1' 
 
    }, { 
 
    id: 2, 
 
    groupname: 'name2' 
 
    }]; 
 

 
    $scope.deleteGroup = function(index) { 
 
    console.log(index); 
 
    if (confirm('Are you sure?')) { 
 
     $scope.userGroups.splice(index, 1); 
 
    } 
 
    } 
 
});
.delete { 
 
    color: red; 
 
} 
 
.group { 
 
    padding: 10px; 
 
    color: grey; 
 
} 
 
.user { 
 
    color: steelblue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 

 
    <div ng-repeat="group in userGroups" class="group"> 
 
    Group {{group.id}} 
 
    <button class="delete" ng-click="deleteGroup($index)">delete</button> 
 
    <div ng-repeat="user in users" ng-if="user.group_id == group.id" class="user"> 
 
     {{user.id}} - {{user.username}} 
 
    </div> 
 
    </div> 
 

 
</div>

+0

Weedozeもこのことに感謝しています。私はこれについても考えていますが、フィルターは自分の仕事にもっと近づくと思います。 –

+0

@hohndoe問題ありません。私はまた、削除機能を追加しました:)もしあなたが '' ng-if'の代わりにそれを使うことができる '' filter'アプローチを好みます。残りのコードは同じままです – Weedoze

関連する問題