2016-12-04 31 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