객체 배열이 있다고 가정합니다.
var people = [
{name: "person 1", favouriteThing: 'pizza'},
{name: "person 1", favouriteThing: 'vegetables'},
{name: "person 2", favouriteThing: 'spinach'},
{name: "person 2", favouriteThing: 'kimchi'},
];
첫 번째 요소가 옵션으로 '사람 1'과 '사람 2'만 포함하도록 선택 요소로이 데이터를 구체화 할 수 있기를 원합니다 (중복 없음). '사람 1'을 선택한 후 두 번째 선택 요소에서 피자와 야채를 사용할 수 있어야합니다.
현재 선택 요소에 대한 내용은 다음과 같습니다.
<select ng-options="person.name for person in people" ng-model="name"></select>
<select ng-options="person.favouriteThing group by name for person in people"></select>
내가 취해야 할 접근 방식에 대한 약간의 의견을 바라고 있습니다. 이런 물건을 더 사용해야할까요? (내 상황에 적합하지 않음)
var people = [
{name: "person 1",
favouriteThings: ['pizza', 'vegetables']
},
{name: "person 2",
favouriteThings: ['spinach', 'kimchi']
}
];
plnkr 생성
두 가지 해결책을 가질 수 있습니다
(1) '이름'속성별로 그룹이있는 단일 선택을로드합니다.
<select ng-options="person.favouriteThing group by person.name for person in c.people" ng-model="name"></select>
(2) 두 개의 다른 선택을로드합니다. 하나는 이름이 있고 하나는 마음에 드는 것입니다. 이름 변경시 좋아하는 것을로드 할 수 있습니다.
<select ng-options="person.name for person in c.getPeopleName()" ng-model="personName"></select>
<select ng-options="person.favouriteThing for person in c.getFavoriteThing(personName)" ng-model="favoriteThing"></select>
this.getPeopleName = function () {
return _.uniq(this.people, function (item) {return item.name;})
};
this.getFavoriteThing = function (people) {
var arr = [];
_.each(this.people, function (item) {
if(item.name === people.name) {
arr.push(item);
}
});
return arr;
};
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다