【问题标题】:AngularJS UI State Provider Resolve StatesAngularJS UI 状态提供者解析状态
【发布时间】:2016-04-16 13:02:35
【问题描述】:

尝试利用 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 什么也不返回。我相信它可能与基于预编译和缩小的编译有关。不确定如何修复。想法?

【问题讨论】:

  • 你能提供你使用$scope.artist的代码吗?它什么都不返回?

标签: javascript angularjs angular-ui-router resolve


【解决方案1】:

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

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

我会考虑重命名您的解析属性,使其与您的artist 服务不同。至少这样,您会收到有关未解决提供程序的错误。我会选择eventArtist 之类的东西。

【讨论】:

  • 谢谢! prod 的依赖注入问题是罪魁祸首!
猜你喜欢
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多