Der beste Weg, dies zu tun ist mit einem Service. Angenommen, Sie haben einen Dienst für das Spielen der Songs verantwortlich haben (Über vereinfacht):
.factory('musicPlayer', function() {
var currentSongId;
// public API
return {
getCurrentSong: function() { return currentSongId; },
setCurrentSong: function (id) { currentSongId = id; }
};
});
Sie können diese dann in Ihrer Playlist verwenden:
.controller('PlaylistCtrl', function ($scope, musicPlayer) {
$scope.isCurrentSong = function(idx) {
if ($scope.currentSong == idx) return true;
};
$scope.play = function(idx) {
musicPlayer.setCurrentSong(idx);
};
$scope.$watch(function() {
return musicPlayer.getCurrentSong()
}, function (id) {
$scope.currentSong = id;
});
});
So Ihrer Ansicht nach könnten dann Zugriff es:
<li ng-repeat="song in songs" ng-class="{ active: isCurrentSong($index) }">
<a ng-click="play($index)">{{song.name}}</a>
</li>
Und Sie würden es ähnlich in Ihrem anderen Controller zugreifen, um das zu erhalten aktuell spielendes Lied. Ohne weitere Details ist es schwierig, genauer zu sein, aber dies ist der Best-Practice-Ansatz.
Was meinst du? Ich werde nichts vom Controller ändern. Ich werde dafür die ng-Klasse benutzen. – ValeriiVasin
Das ist eigentlich, was ich meinte, verwenden Sie 'ng-Klasse' anstatt Javascript vom Controller hinzuzufügen. Vielleicht möchten Sie darüber nachdenken, einen einzigen Controller zu haben, es wird die Dinge vereinfachen. Du könntest noch dedizierte Dienste haben (einen für den Song und den anderen für die Playlist) – Ulises
Ich mag diesen Ansatz auch. Werde darüber nachdenken. Auch andere teilen wie man "Angular-Way" teilt :) Danke auch für Ihre Antworten. – ValeriiVasin