2016-12-04 85 views
0

当我捆绑js文件时,解析语句在角度项目中不起作用。下面是代码捆绑和缩小时角度解析不起作用

app.js

app.config(["$stateProvider", 
     "$urlRouterProvider", 
     function ($stateProvider, $urlRouterProvider) { 
      $urlRouterProvider.otherwise("/"); 

      $stateProvider 
       .state("home", { 
        // welcome 
        url: "/", 
        templateUrl: "app/views/welcomeView.html" 
       }) 
       .state("productList", { 
        // Product List 
        url: "/products", 
        templateUrl: "app/views/productListView.html", 
        controller: "ProductListCtrl as vm" 
       }) 
      .state("productDetail", { 
       // Product Details 
       url: "/products/:productId", 
       templateUrl: "app/views/productDetailView.html", 
       controller: "ProductDetailCtrl as vm", 
       resolve: { 
        productResource: "productResource", 
        product: function (productResource, $stateParams) { 
         var productId = $stateParams.productId; 
         return productResource.get({ id: productId }, function (data) { 
          return data; 
         }); 
        } 
       } 
      }); 

     }] 
); 

productDetailCtrl.js

(function() { 
"use strict"; 

angular 
    .module("productManagement") 
    .controller("ProductDetailCtrl",["product",ProductDetailCtrl] 
); 

function ProductDetailCtrl(product) { 
    var vm = this; 
    vm.product = product; 
    vm.title = "Product Detail: " + vm.product.productName; 
} 
}()); 

登录后,我可以看到完美的产品列表中,但是当我尝试看看的产品没有什么细节在控制台中也不会发生错误。如果我在控制器中注释resolve属性并删除product参数,那么它工作正常。捆绑和缩小后才会出现此问题。如果我提到裸文件,它的工作正常。请告诉我我犯了什么错误。

回答

1

在任何角度使用依赖注入的函数之前,可以使用与参数名称一样的pattern of passing an array作为字符串。

resolve: { 
    productResource: "productResource", 
    product: ["productResource", "$stateParams", function (productResource, $stateParams) { 
     ... 
    }] 
} 
+0

您还可以通过使用自动化https://github.com/olov它/ NG-注释 – fernando

1

使用内嵌的解析器功能阵列注释:

resolve: { 
    productResource: "productResource", 
    //product: function (productResource, $stateParams) { 
    product: ["productResource", "$stateParams", function (productResource, $stateParams) { 
     var productId = $stateParams.productId; 
     return productResource.get({ id: productId }, function (data) { 
      return data; 
     }).$promise; 
    //} 
    }] 
} 

欲了解更多信息,请参阅AngularJS Developer Guide - Dependency Injection -- Inline Array Annotation