1

サービスでコントローラー間で変数を渡したい。変数 (この場合は曲の 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>
4

1 に答える 1

3

うーん..サービス返品new ActionbarService。おそらく、を使用するfactoryか、ゲッター/セッターをthis.get&に変更したいと思うでしょうthis.set

また、汚染を避けてください$rootScope。コントローラー間でデータを共有したいときはいつでも、サービスを使用してください。

于 2013-09-18T21:58:12.280 に答える