У меня есть элементы UL> LI, заполненные угловым ng-repeat. Я хочу выбрать один из этих LI одним нажатием кнопки, которая находится за пределами ng-repeat. Как я могу достичь этого?
Ниже приведен пример кода.
Список LI
<ul ng-controller="ConstantsController as ctrl" >
<li ng-repeat="sectionType in sectionTypes">{{sectionType.description}}</li>
</ul>
Кнопка - при щелчке по этой кнопке необходимо выбрать конкретный LI.
<button class="btn btn-primary btn-xs"></button>
Пример:
Рассмотрим пример LI, имеющих значения A, B и C, заполненные через ng-repeat и щелкнув по кнопке, я хочу выбрать B.
ОК. Прочитав немного jQuery API, я нашел следующее решение более подходящим.
Поручаю идентификатор в UL, а затем в JavaScript Я использую JQuery содержит функцию, чтобы найти текст LI и изменить свой класс выбраны соответствующим образом.
Ниже приведен код HTML/JSP.
<ul ng-controller="ConstantsController as ctrl" id="section-type-list">
<li ng-repeat="sectionType in sectionTypes" ng-click="setSection(sectionType.id, sectionType.description)">{{sectionType.description}}</li>
</ul>
Ниже приведен Javascript
$("#section-type-list li:contains('" + value + "')").addClass('selected');
Спасибо всем за вашу поддержку.
jquery
для такой операции в angular
.
Вы можете сделать это, я дал образец, так как вы не предоставили код,
При щелчке примените стиль,
В HTML:
<ul ng-repeat="vote in votes" ng-click="editComment(vote.id)" ng-class="{selected : vote.id === idSelectedVote}">
В контроллере:
$scope.idSelectedVote = null;
$scope.editComment = function(idSelectedVote) {
$scope.idSelectedVote = idSelectedVote;
console.log(idSelectedVote);
}
Вы можете использовать директиву ng-class
с опцией isSelected
в элементе массива sectionTypes
.
Живой пример на jsfiddle.
angular.module('ExampleApp', [])
.controller('ExampleController', function() {
var vm = this;
vm.sectionTypes = [{
description: "A",
id: 1,
isSelected: false
}, {
description: "B",
id: 2,
isSelected: false
}, {
description: "C",
id: 3,
isSelected: false
}];
vm.setSelected = function(id) {
//Find particular element in vm.sectionTypes by id
angular.forEach(vm.sectionTypes, function(item) {
if (item.id === id)
item.isSelected = !item.isSelected;
});
};
});
.selected {
color: red;
font-style: italic;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="ExampleApp">
<div ng-controller="ExampleController as vm">
<ul>
<li ng-class="{selected:sectionType.isSelected}" ng-repeat="sectionType in vm.sectionTypes">{{sectionType.description}}</li>
</ul>
<button ng-click="vm.setSelected(2)">
set B Selected
</button>
<hr>
<select ng-model="selectedSection" ng-options="sect as sect.description for sect in vm.sectionTypes">
</select>
<button ng-disabled="!selectedSection" ng-click="vm.setSelected(selectedSection.id)">
set selected by select
</button>
</div>
</div>
comments
к объекту относятся к объектуsectionType
?