ng-hide & ng-show в AngularJS
Используя AngularJS, я хочу показать и скрыть данные, связанные с определенным идентификатором, путем переключения.
Мой формат данных JSON выглядит так:
$scope.things = [{
id: 1,
data: 'One',
shown: true
}, {
id: 2,
data: 'Two',
shown: false
}, {
id: 3,
data: 'Three',
shown: true
}, ];
Я хочу, чтобы при нажатии на id-1 отображался текст One и скрывались другие, когда при нажатии на id-2 показывался текст Two, скрывались другие и так далее.
Вот скрипка, что я попробовал: jsfiddle: Демо-ссылка
3 ответа
Решение
Я обновил твой код
$scope.flipMode = function (id) {
$scope.things.forEach(function (thing) {
if(id == thing.id){
thing.shown = true;
}
else{
thing.shown = false;
}
})
};
<a href="#" ng-click="flipMode(thing.id)">{{thing.id}}</a>
вот рабочая скрипка
Он должен работать
$scope.flipMode = function (id) {
$scope.things.forEach(function (thing) {
if(thing.id === id) {
thing.shown = true;
return;
}
thing.shown = false;
})
};
<div ng-repeat="thing in things">
<a href="#" ng-click="flipMode(thing.id)">{{thing.id}}</a>
</div>
Разветвленное рабочее решение: http://jsfiddle.net/nypmmkrh/
Измените свою функцию объема:
$scope.flipMode = function (id) {
$scope.things.forEach(function(thing) {
if(thing.id == id) {
thing.shown = true;
} else {
thing.shown = false;
}
});
};
И передайте идентификатор в виде:
<a href="#" ng-click="flipMode(thing.id)">{{thing.id}}</a>