AngularJS UI状态提供程序解析状态

AngularJS UI State Provider Resolve States

本文关键字:状态 程序 UI AngularJS      更新时间:2023-09-26

尝试利用AngularJS UI状态并使用解析设置变量。我目前在我的app.js中有这个--

var stateConfig = ['stateHelperProvider', function(stateHelperProvider) {
  stateHelperProvider
  .state({
    name: 'events',
    url: '/' + artistSlug,
    templateUrl: "/templates/events/events.html",
    controller: "EventsCtrl",
    resolve: {
      artist: function(artist) {
        return artist.getArtist();
      }
    }
  });

在EventsCtrl中,我有以下内容--

    angular.module('artist.events.controllers', []).
controller('EventsCtrl', ['$filter', '$rootScope', '$scope', '$state', '$stateParams', '$location', 'artist', function($filter, $rootScope, $scope, $state, $stateParams, $location, artist) {
    $scope.artist = artist;

在我的本地开发机器上,它解析正确。然而,在prod中,$scope.artist没有返回任何内容。我相信这可能与基于预编译和缩小的编译有关。但不确定如何修复。想法?

除非您使用像ng-annotation这样的构建工具,否则您必须为resolve属性提供DI注释,即

resolve: {
    artist: ['artist', function(artist) {
        return artist.getArtist();
    }]
}

我会考虑重命名解析属性,使其与artist服务不同。至少这样,您会得到一个关于未解析提供者的错误。像eventArtist这样的东西会是我的选择。