2016-06-19 3 views
0

JSON 컬렉션을 가지고 있는데 AngularJS HTML을 사용하지 않고 IsPreffered = TRUE으로 표시된 이메일 ID를 발송하고 싶습니다. user.Name필터 AngularJS를 사용하여 컬렉션에서 Json 요소를 삽입했습니다.

내 JSON 컬렉션 :

{ "user" : [ 
    { 
     "Name" : "B. Balamanigandan", 
     "Email": [ 
      { 
       "Id": "[email protected]", 
       "IsPreffered": true 
      }, 
      { 
       "Id": "[email protected]", 
       "IsPreffered": false 
      } 
    ]} 
]}; 

HTML 소스 코드 :

<div> 
    <h3>Employee Details:</h3> 
    <span> {{collection.user.Name}} </span> 
    <span> {{collection.user.Email.Id}} </span> 
</div> 

컬렉션 user은 하나의 문서가 포함되어 있습니다. 그래서, ng-repeat는 사용하지 않았습니다. user은 컬렉션이 아닌 문서입니다. 한 번 더 확인해 봐. 둘 이상의 이메일이`IsPreferred == true '를 가지고 있다면, 나는 마지막 것을 가져 간다. 친절하게 도와주세요.

JavaScript 레벨이 아닌 HTML 레벨을 사용하여 조건을 적절히 필터링하십시오. 친절하게 도와주세요. 대신이의

+0

귀하의 ngRepeat은 어디에 있습니까? – dfsq

+0

@dfsq Collection ** 사용자 **는 단 하나의 문서 만 포함합니다. 그래서, ng-repeat는 사용하지 않았습니다. ** 사용자 **는 문서가 아닌 콜렉션입니다. 친절하게 도와주세요. –

답변

1

:

에만 1 사용자 개체가 있지만 있기 때문에, 배열 구문을 사용할 필요가
<div> 
    <h3>Employee Details:</h3> 
    <span> {{collection.user[0].Name}} </span> 

    <span ng-repeat="email in collection.user[0].email| filter: {IsPreffered : 'true'}"> {{email.Id}} </span> 
</div> 

, 그것이으로 구성되어

<div> 
    <h3>Employee Details:</h3> 
    <span> {{collection.user.Name}} </span> 
    <span> {{collection.user.Email.Id}} </span> 
</div> 

이 작업을 수행해야합니다 json을 배열로 저장합니다 ([], Email의 경우와 동일). http://jsfiddle.net/Lvc0u55v/5593/

UPDATE : 여기

이 바이올린입니다 사실 마지막 이메일을 보여주는를 들어, 사용 NG-경우 : http://jsfiddle.net/Lvc0u55v/5594/

+0

감사하지만 한 번 더 확인해야합니다. 둘 이상의 이메일에 ** IsPreferred == true **가있는 경우 마지막으로 가져갑니다. 친절하게 제발 도와주세요. –

+0

이 점을 언급하여 질문 세부 사항을 업데이트하십시오. – gaurav5430

+0

한 가지 해결책이 더 필요합니다. 새로운 질문 http : // stackoverflow를 게시했습니다.com/questions/37905191/map-two-collections-inner-join-using-anglesjs-html 친절하게 도와주세요. –

0

:

여기
<span ng-repeat="email in collection.user[0].Email| filter: {IsPreffered : true} " ng-if="$last"> {{email.Id}}</span> 

업데이트 된 바이올린입니다 이를 수행하는 한 가지 방법은 사용자 전자 메일 배열에 filter과 함께 ngRepeat을 사용하여 "IsPreffered": true 인 전자 메일 만 가져 오는 것입니다. 필터는 Emails 배열의 각 객체를 필터 객체 (filterEmail)와 비교합니다. 이 필터 개체는 컨트롤러에서 정의됩니다.이 방법을 사용하면 요청에 따라 변경하거나 동적으로 설정할 수 있습니다.

var app = angular.module('app', []); 
 
app.controller('ctrl', function($scope) { 
 
    $scope.collection = { 
 
    "user": { 
 
     "Name": "B. Balamanigandan", 
 
     "Email": [{ 
 
     "Id": "[email protected]", 
 
     "IsPreffered": true 
 
     }, { 
 
     "Id": "[email protected]", 
 
     "IsPreffered": false 
 
     }] 
 
    } 
 
    }; 
 

 
    $scope.filterEmail = { 
 
    "IsPreffered": true 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 

 
<body ng-app="app" ng-controller="ctrl"> 
 
    <div> 
 
    <h3>Employee Details:</h3> 
 
    <span> {{collection.user.Name}} </span> 
 
    <span ng-repeat="email in collection.user.Email | filter : filterEmail "> 
 
     {{email.Id}} 
 
    </span> 
 
    </div> 
 
</body>

참고 : 나의 이해하기가 객체 내부 배열로 user이 훨씬 이해가되지 않습니다 (내 예제에서 나는 내부 배열을 제거). 이 데이터 스키마를 유지하려고한다면 collection.user의 모든 참조를 collection.user[0]으로 변경해야합니다.

관련 문제