我想通过服务在控制器之间传递一个变量。这是传递变量的服务(在本例中为歌曲 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 时它起作用(我忘记了在哪里),但是当我尝试在我的第二个控制器中设置它时它不起作用。以下是我观点的相关部分供参考:
<div class="cell action-bar" ng-click="actionbarSetSong(song.id);" ng-repeat="song in media.data">
Some Stuff
</div>