2017-04-24 44 views
-1

我遇到問題,將我的下拉篩選器($ scope.selectedOperation.OP_NAME)的結果綁定到Web服務,以便在加載頁面時顯示結果。我不斷收到一條錯誤,指出「無法讀取未定義的屬性OP_NAME」。即使我將結果記錄到控制檯時,一切都看起來正確。請幫忙!我如何使用AngularJS綁定和填充頁面加載數據?

var headcountsApp = angular.module('headcountsApp', []); 

headcountsApp.controller('headcountsController', ['$scope', '$http', 
function($scope, $http) { 

    $scope.selectOperations = [];; 

    //Data for drop-down filters 
    $scope.getOpFilter = function() { 
    var dtaArray = {}; 
    $http.post("/services/SA.svc/getOpName", dtaArray).then(function onSuccess(response) { 
     $scope.opFilter = JSON.parse(response.data.getOpNameResult); 

     angular.forEach($scope.opFilter, function(value, key) { 
     $scope.selectOperations.push(value); 
     }); 
     $scope.selectedOperation = $scope.selectOperations[0]; 
    }); 
    }; 

    $scope.corpArray = []; 

    $scope.getCorp = function() { 
    var dtaArray = {}; 
    dtaArray.OP_NAME = $scope.selectedOperation.OP_NAME; 

    var dtaJson = JSON.stringify(dtaArray); 

    $http.post("/services/SA.svc/getCorpHeadCounts", 
     dtaArray).then(function onSuccess(response) { 
     $scope.corporateSummary = 
     JSON.parse(response.data.getCorpHeadCountsResult); 

     angular.forEach($scope.corporateSummary, function(value, key) { 
     $scope.corpArray.push(value); 
     }); 
    }); 
    }; 
    angular.element(document).ready(function() { 
    $scope.getOpFilter(); 
    $scope.getCorp(); 
    }); 
}]); 
+0

你需要在那裏有東西... –

+0

東西在哪裏? – user3438030

+0

你在調試過程中通過了你的代碼嗎?如果是的話,我敢打賭你會發現在$ scope.selectedOperation被設置之前調用了$ scope.getCorp()。這是因爲$ scope.getOpFilter()中的promise($ http)在$ scope.getCorp()被調用之前不會被滿足,你需要在這個站點上搜索promise鏈和/或$ q.all()。主題已經在SO上多次報道。 – jbrown

回答

0

請getCorp功能後,取出最後一行angular.element(文件)。就緒(函數(){}調用$ scope.getOpFilter()函數getOpFilter後$ scope.getCorp()。

相關問題