2017-09-28 69 views
0

我的工作由其他人開發的應用程序,我沒有任何文件或任何方式與他們聯繫,我有這樣的問題:

這是需要被每分鐘刷新一次的角度應用,在應用程序的其他部分,他們正在使用$區間,但在這個頁面,如果我嘗試使用它,我的WebAPI停止工作的電話和我recive這個錯誤:

WebApiFactory.getNoStatusOrders is not a function 

我需要你的幫助就知道爲什麼會發生這種情況,下面是我的代碼:

angular.module('AssemblyLive').controller('overviewCarsWithoutStatus', [ 
'$scope', '$rootScope', '$location', 'WebApiFactory', "$interval", 'StatusPointMonitorFactory', 
function ($scope, $rootScope, $location, $interval, WebApiFactory, StatusPointMonitorFactory) { 
    ... 
    var areas = { 
     bodyShop1:"B000,B001,B020,B031,B200,B211,B220,B231,B300,B311,B320,B331,B370,B371,B375,B376,B380,B381,B383,B386,B390,B400,B401,B410,B420,B421,B425,B426,B430", 
     bodyShop2: "B431,B435,B436,B440,B451,B500,B521,B540,B551,B553,B600,B750,B760,B770,B781,B783,B790,B791,B800,B811,B813,B900", 
     paintShop1: "D000,D011,D012,D051,D100,D130,D131,D132,D151,D152,D230,D251,D252,D300,D351,D352,D360,D381,D390,D400,D451,D452,D470", 
     paintShop2: "D471,D472,D481,D482,D500,D501,D531,D532,D540,D561,D562,D600,D620,D650,D670,D691,D692,D700,D731,D741,D750,D800,D812,D821,D822,D841,D842", 
     assembly: "F000,F100,F150,F200,F250,F300,F350,F400,F450,F500,F550,F600,F650,F700,F750,F800,F850,F900" 
    }; 
    ... 
    //Start the creation of the overview. 
    function initializeOverview() { 
     $scope.counters = []; 
     //Iterates over the configuration. 

     //Get all the status to call the query. 
     var status = $scope.headers.map(function(a) {return a.status.toString();}); 
     //Call to create the knrs b y area. 
     getKNRWithoutStatus(status.toString()); 


     for(var status in areas){ 
      getCarsWithNoStatus(areas[status]); 
     } 

     getNoStatusCounters("B000,C000,D000,E000,E500,F000,F100,F950,G000,G900"); 

    } 
    // Funtion to set the counters in the table headers 
    function getNoStatusCounters(status) { 
     WebApiFactory.getNoStatusOrdersCounter(status).then(function (resultData) { 
      Object.getOwnPropertyNames(resultData.NoStatusOrders).forEach(function(name) { 
    ... 
    function getCarsWithNoStatus(status) { 
     // Fetch all the counters from the WebAPI 
     WebApiFactory.getNoStatusOrdersCounter(status).then(function (resultData) { 
      ... 

    function getKNRWithoutStatus(status) { 
     var orders = []; 
     //Query the status monitor. 
     WebApiFactory.getNoStatusOrders(status).then(function(statusMonData) { 
      ... 

    /** To refresh data when the clock in the footer refresh. */ 
    $rootScope.$on('carsWithoutStatusOverview', function(){ 
     initializeOverview(); 
     $interval(initializeOverview, Config.dataRefreshInterval * 1000) 
    }); 

注意:我的頁面完美無缺地添加$ interval

+0

where'areas' variable defined? –

+0

它被定義爲代碼開頭的全局變量 –

+0

我剛剛添加了更多的代碼,我無法粘貼所有代碼,因爲代碼太長 –

回答

1

查看您的依賴注入。您將WebApiFactory$interval放在$ inject列表和參數中的不同位置。 (因此$interval變量指向您的WebApiFactory服務,反之亦然。)

+0

對於真實的代碼嗎?那麼重要嗎?我有這樣的想法,但我從來沒有真正使用它,所以我不相信這個位置很重要。 –

+1

絕對如此。字符串數組告訴角哪些註冊服務注入哪個參數位置。參數名稱本身就是任意的局部變量名稱。 –

+1

我應該注意:如果省略$ inject列表,Angular會嘗試提供匹配參數名稱的服務。但是,如果你縮小代碼,這是不可靠的。參數名稱將被簡短的一個或兩個字母標記取代,而Angular將不再能夠匹配它們。這就是數組語法在那裏的原因。琴絃是小型化安全的。 –

相關問題