2017-04-24 3 views
-1

페이지로드시 결과가 표시되도록 웹 서비스에 드롭 다운 필터 ($ scope.selectedOperation.OP_NAME)의 결과를 바인딩하는 데 문제가 있습니다. "정의되지 않은 OP_NAME 속성을 읽을 수 없습니다."라는 오류가 계속 나타납니다. 결과를 콘솔에 기록 할 때 모든 것이 올바르게 보입니다. 도와주세요!AngularJS를 사용하여 pageload에서 데이터를 바인딩하고 채우는 방법은 무엇입니까?

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

something? – user3438030

+0

디버그에서 코드를 밟았습니까? 그렇다면 $ scope.selectedOperation이 설정되기 전에 $ scope.getCorp()가 호출됩니다. $ scope.getCorp()가 호출되기 전에 $ scope.getOpFilter()의 약속 ($ http)이 충족되지 않기 때문에이 사이트에서 promise chaining 및/또는 $ q.all()을 검색해야합니다. 주제가 여러 차례 다루어졌습니다. – jbrown

답변

0

getCorp 기능 후에 .ready (함수() {} 콜 $의 getOpFilter 기능 후 scope.getOpFilter()와 $ scope.getCorp()을 마지막 줄의 angular.element (문서)를 제거하십시오.

관련 문제