У меня возникла проблема здесь и нужно какое-то направление. У меня есть раскрывающийся список, где я выбираю свой выбор, и он вытащит соответствующий результат из двух разных угловых данных. Например, у меня есть две угловые области, одна называется $scope.mSessions
, а другая - $scope.cSessions
. Каждый массив имеет разные ключи, кроме одного, где они имеют одну и ту же категорию, и используйте мой тег <select>
, чтобы вытащить общие данные в зависимости от моего выбора. Так что мой <select>
вариант будет иметь категории, как RED FRUIT
, YELLOW FRUIT
и ORANGE FRUIT
и если я выбираю RED FRUIT
, она будет проходить через мои массивы в mSessions
и cSessions
затем подтянуть "m_category": ["Apple", "Strawberry", "Pineapple"]
и "category": [{"RED":["YES"]}]
. Я думаю, что я должен либо создать новый массив, который объединит оба данных в один, а затем выполнит сравнение строк или каким-то образом получит доступ к двум различным данным, выбрав одно из выпадающих меню. Я не могу понять, что это лучший способ сделать это. Пожалуйста помоги..!Извлечение комбинированного результата из раскрывающегося списка, но из двух разных угловых массивов
Вот мой код и JSFiddle первый http://jsfiddle.net/missggnyc/ujj18nhv/29/
HTML
<div ng-app="myFruit">
<div ng-controller="fruitController">
<select ng-model="selectedAnswer" ng-options="c.cat for c in mySelection"></select> {{selectedAnswer}}
<table>
<tr>
<td>Session Name</td>
<td>M Category</td>
</tr>
<tr ng-repeat="m in mSessions">
<td>{{m.name}}</td>
<td>{{m.m_category}}</td>
</tr>
</table>
<table>
<tr>
<td>C Category</td>
</tr>
<tr ng-repeat="c in cSessions ">
<td>{{c.category}}</td>
</tr>
</table>
</div>
</div>
JS
var app = angular.module("myFruit", []);
app.controller("fruitController", function($scope) {
$scope.mySelection = [
{"cat": "RED FRUIT", "m_category": ["Apple", "Strawberry", "Pineapple"], "category": [{"RED":["YES"]}] },
{"cat": "YELLOW FRUIT", "m_category": ["Banana", "Pineapple"], "category": [{"YELLOW": ["YES"]}] },
{"cat": "ORANGE FRUIT", "m_category": ["Peach", "Nectarine"], "category": [{"ORANGE": ["YES"]}]}
];
$scope.mSessions = [{
"id": 2,
"name": "BD20",
"m_category": ["Apple", "Strawberry", "Pineapple"]
}, {
"id": 3,
"name": "CS03",
"m_category": ["Banana", "Pineapple"]
}, {
"id": 4,
"name": "MIS99",
"m_category": ["Peach", "Nectarine"]
}];
$scope.cSessions = [{
"number": 439,
"name": "FDFG",
"category": [{"RED":["YES"]}]
}, {
"number": 34,
"name": "CN",
"category": [{"YELLOW": ["YES"]}]
}, {
"number": 44,
"name": "PPP",
"category": [{"ORANGE": ["YES"]}]
}];
});
Вы можете 'flatMap' вместе все комбинации категорий для заполнения одного массив с al l перестановки ключей, но это не кажется полезным для того, что вы можете делать. См. Https://jsfiddle.net/fo0aoc9f/ для примера того, как вы можете это сделать (хотя вы, вероятно, захотите использовать реализации «flatMap» и «uniq» из библиотеки исполнителей, таких как Lodash в процессе производства). – miqid
@miqid, спасибо за ваш вклад. Но я не очень хорошо знаком с методами 'flatMap' и' uniq', поскольку они больше Java-методов. Я также обновил массив '$ scope.mySelection', так как мне не хватало две категории из diff. массивы. Пожалуйста, см. Мой обновленный код .... Кроме того, любые методы JS, которые я могу использовать, чтобы сделать эту работу? – missgg
Ваша цель до сих пор не ясна для меня. Вы пытаетесь просто фильтровать отображение '$ scope.mSessions' и' $ scope.cSessions' на основе того, что пользователь выбрал из '$ scope.mySelection'? Или вы пытаетесь сгенерировать элементы для '$ scope.mySelection' на основе содержимого других массивов? Если последнее, вам понадобится какой-то способ (например, общий ключ соединения) для сопоставления 'm_category' или' category' с соответствующим элементом '$ scope.mySelection'. Кстати, эти методы не являются специфическими для Java вообще - они распространены в функциональном программировании. – miqid