我正在尝试对我的代码应用某种过滤器,但是当我点击菜单时它没有改变任何东西。我需要最初显示我的所有相册,如果用户点击其中一位艺术家我想要过滤它们。在这里是我的控制器:
Function ListCtrl($scope, $http) {
$http({
method: 'GET',
url: 'json/json_price_1.json'
}).success(function(data) {
$scope.artists = data.artists; // response data
$scope.albums = [];
$scope.currentArtist = null;
$scope.setArtist = function(name) {
$scope.currentArtist = $scope.artists[name];
};
if ($scope.currentArtist == null) {
angular.forEach($scope.artists, function(element, index) {
angular.forEach(element.albums, function(album, index) {
$scope.albums.push(album);
});
});
} else {
angular.forEach($scope.currentArtist.albums, function(album, index) {
$scope.albums.push(album);
});
};
});};
我的html如下:
<div ng-controller="ListCtrl">
<ul class="topcoat-list" ng-repeat="artist in artists">
<li class="topcoat-list__item">
<a href="" ng-click="setArtist(artist.name)">
{{artist.name}}
</a>
</li>
</ul></div>
<div ng-controller="ListCtrl">
<ul ng-repeat="album in albums">
<li>{{album.title}}</li>
</ul>
感谢您的时间!
答案 0 :(得分:0)
不是angularjs的专家,问题是您在设置艺术家后没有过滤相册。
Function ListCtrl($scope, $http) {
$scope.setArtist = function (name) {
$scope.currentArtist = $scope.artists[name];
$scope.filter();
};
$scope.filter = function () {
$scope.albums = [];
if (!$scope.currentArtist) {
angular.forEach($scope.artists, function (element, index) {
angular.forEach(element.albums, function (album, index) {
$scope.albums.push(album);
});
});
} else {
angular.forEach($scope.currentArtist.albums, function (album, index) {
$scope.albums.push(album);
});
};
}
$http({
method: 'GET',
url: 'json/json_price_1.json'
}).success(function (data) {
$scope.artists = data.artists; // response data
$scope.currentArtist = undefined;
$scope.filter()
});
};