Tôi đang tạo một ứng dụng với API Spotify. ứng dụng có thể làm: 1. album Tìm theo tên nghệ sĩ thông qua một lĩnh vực đầu vào 2. khi album được hiển thị người dùng có thể nhấp vào tên của album và xem các ca khúc của album nàyAngularJS lồng nhau ui-view thành một ng-repeat
Tôi đã tạo ra 2 quan điểm: 1. giao diện album 2. theo dõi lượt xem, chế độ xem con của album.
Tôi muốn hiển thị các bản nhạc ui-view của một album được nhấp cụ thể - với ID là - vào ng-repeat của album. nhưng kết quả là tôi có cùng một danh sách bài hát của album được nhấp trong tất cả danh sách album. làm thế nào tôi có thể hiển thị ui-view của album trong vùng chứa album được nhấp vào đó là kết quả của chỉ thị ng-lặp lại?
đây mã:
Route:
------
.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('albums', {
url: '/',
templateUrl: 'views/main.html',
controller: 'MainCtrl'
}).
state('albums.tracks', {
url: ':id/tracks',
templateUrl: 'views/tracks.html',
controller: 'TracksCtrl'
});
})
-----
Các album xem:
<div ng-if="albums.items">
<h1>{{searchedArtist}}'s Album List:</h1>
<!-- albums ng-repeat -->
<div ng-repeat="album in albums.items | unique:'name'" id="{{album.id}}">
<img ng-src="{{album.images[1].url}}" width="100">
<!-- the action to translate the state to tracks view -->
<a ui-sref="albums.tracks({id : album.id})">{{album.name}}</a>
<!-- tracks view -->
<div ui-view></div>
</div>
album chính điều khiển:
angular.module('spotifyAngularApp')
.controller('MainCtrl', function ($scope, spotifyService) {
var options = {
'limit': 10
};
$scope.searchAlbums= function() {
var sanitizeArtist = $scope.artist.split(' ').join('+');
$scope.searchedArtist = $scope.artist;
spotifyService.search(sanitizeArtist, 'album', options).then(function(data) {
$scope.albums = data.albums;
});
};
});
Các theo dõi điều khiển:
angular.module('spotifyAngularApp')
.controller('TracksCtrl', function ($scope, $stateParams, spotifyService) {
console.log($stateParams);
spotifyService.albumTracks($stateParams.id).then(function(data){
$scope.tracks = data.items;
});
});
Có thể điều này có thể gây trở ngại cho bạn: http://stackoverflow.com/a/24902144/1679310. Có một ví dụ về cách xử lý kịch bản lặp lại ... có lẽ điều đó có thể đưa ra một số ý tưởng ... –
Cảm ơn bạn đã tham khảo, nó hoạt động, nhưng khi bạn tạo một trạng thái mới, router ui sẽ tìm kiếm một url mẫu và ui-view. nhưng tôi đã cố gắng tìm hiểu làm thế nào để thêm vào một ng-lặp lại một ui-view với một ng-lặp lại bên trong. – davelab
bạn có thể tạo plunkr, nơi bạn đã đạt được với dữ liệu mẫu nó sẽ hữu ích hơn – vijay