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