Я новичок в программировании углового js, поэтому, пожалуйста, извините меня, если мой вопрос наивен. Я заполняю список флажков в зависимости от значений внутри объекта json. Я использую ng-repeat для итерации по списку полученных ключей и значений и отображения флажка. При каждом щелчке по флажку я делаю вызов сервера для получения релевантных данных. Данные, которые я получаю, должны быть заполнены в раскрывающемся списке только тогда, когда нажимаются, а раскрывающийся список должен исчезать при щелчке. Я хочу захватить выбранный вариант выпадающего списка после того, как пользователь его выберет. Я застрял в том, как это получить.
Мой код для справки:
HTML:
<div class="container" ng-controller="OptionsController" >
<div ng-repeat="(key, value) in options" ng-if="value === 'text'">
<!-- {{key}} : {{value}}-->
<input type="checkbox" ng-click="getDistinct(key)"/>
<label>{{key}}
</label>
<div class="animate-show">
<select id="selector" ng-model="QueryFormData.Graph.selected">
<option ng-repeat="name in QueryFormData.Graph.options"
ng-value="name">{{name}}</option>
</select>
</div>
</div>
</div>
Код контроллера:
myApp.controller('OptionsController', ['$scope', '$http', '$location', 'datashare',
function($scope, $http, $location, datashare) {
//$scope.options = datashare.jsonData;
$scope.options = {
"_id": "571a0fcfaa6d92581ec99b2e",
"Name": "text",
"isstring": "text",
"value1": "number",
"value": "number",
"status": "text",
"ItantaTime": "time"
};
$scope.keyArr = [];
$scope.QueryFormData = {
Graph: {
options: [
'Line Graph'
],
selected: 'Line Graph'
},
displayValue: ''
};
$scope.getDistinct = function(key) {
if ($scope.keyArr.indexOf(key) == -1) {
$scope.keyArr.push(key);
var ServerAddr = "http://localhost:2000/getDistinct/" + key;
console.log("Server Addr :" + ServerAddr);
$http.get(ServerAddr, {
headers: {
'Content-Type': 'application/json'
}
})
.success(function(result) {
console.log(result);
})
.error(function(data, status) {
console.log(data)
});
}
console.log("changed : " + key);
};
}
]);
С текущим кодом я вижу сразу все выпадающие списки. Я хочу показать выпадающие списки в качестве функции переключения при выборе флажка.
Любая помощь высоко ценится.
Во-первых, вам не нужно ng-if
. Используйте встроенный фильтр:
<div ng-repeat="(key, value) in options" ng-if="value === 'text'">
Возможно
<div ng-repeat="(key, value) in options | filter: { value: 'text' }">
Для вашей проблемы фильтрации вы можете снова использовать filter
в элементах select
чтобы получать только нужные значения выпадающего списка. Ваш ответ JSON
должен обладать фильтруемым свойством, хотя... Итак, разместите свой JSON
.
Вы используете его следующим образом:
<select ng-options="item.key as item.name for item in collection| filter:{ someProperty: true }">