サービスでコントローラー間で変数を渡したい。変数 (この場合は曲の ID) を渡すサービスは次のとおりです。
'use strict';
angular.module('PortalApp')
.service('ActionbarService', ['$window', function ActionbarService(window) {
var song;
return {
getSong: function () {
return song;
},
setSong: function(value) {
song = value;
}
};
}]);
これは、私が曲を設定しているコントローラーの関連部分です。
$scope.actionbarSetSong = function(song_id) {
ActionbarService.setSong(song_id);
}
そして、これが私が曲IDを取得しているコントローラーです:
'use strict';
angular.module('PortalApp')
.controller('ActionbarCtrl', function ($scope, MediaService, ActionbarService, $location, $routeParams, AudioPlayerAPI) {
$scope.song_id = ActionbarService.getSong();
$scope.openPlaylistModal = function (song_id) {
$("#addToPlaylist").modal('show');
}
});
ビューでgetSongを実行すると機能したため(どこを忘れたか)、サービスに設定されていますが、2番目のコントローラーに設定しようとすると機能しません。参照用の私のビューの関連部分は次のとおりです。
<div class="cell action-bar" ng-click="actionbarSetSong(song.id);" ng-repeat="song in media.data">
Some Stuff
</div>