2014-07-16 3 views
1

각도에서 일부 메서드 호출은 개체을 반환하고 일부는 리소스을 반환하기 때문에 비교하기가 어렵습니다. 나는 사용자 모델과 권한 모델을 가지고있다.AngularJS - 리소스 및 개체 비교

myApp.service('User', function($resource) { 
    var User = $resource('users/:userId.json'); 
    return User; 
}); 

그리고 권한 모델은 정의 : 사용자 모델을 정의

{"id":1,"username":"Admin","group_id":"1","permissions":[{"id":1,"name":"Create Users"},"id":2,"name":"Delete Users"}]} 

이 수단 : 나는 사용자를 검색 할 때

myApp.service('Permission', function($resource) { 
    var Permission = $resource('permissions'); 
    return Permission; 
}); 

은 json으로 사용자의 권한이 반환 사용자를 검색 할 때 권한으로 액세스 할 수 있습니다. 예 :

User.get({userId: 1}).permissions 

내가 모든 권한 목록과이를 비교하고, 사용자가 이미하지 않는 권한의 목록을 얻으려면이 있습니다

$scope.user = User.get({userId: 1}); 
Permission.query().$promise.then(function(all){ 
    $scope.user.$promise.then(function(u){ 
    $scope.unselected_permissions = _.difference(all, u.permissions); 
    }); 
}); 

문제는, all자원의 배열입니다, u.permissions개체의 배열입니다. u.permissions에서 리소스 목록을 반환하는 간단한 방법이 있습니까? 여기서 해결할 약속을 기다리는 대신 제가 할 수있는 일이 있습니까?

Permission.query().$promise.then(function(all){ 
    $scope.user.$promise.then(function(u){ 
    $scope.unselected_permissions = all.filter(function(p){ 
     return !u.permissions.some(function(q){return p.id == q.id;}); 
    }); 
    }); 
}); 
:

답변

0

나는 ID를 비교하여 내 자신의 차이 방법을 만들어이 문제를 해결 할 수 있었다