2014-10-15 3 views
0

내 문제는 "det"값이 컨트롤러에 적용되어 다시로드해야합니다. 어쨌든 계속 신경 쓰지 않고 계속 읽으므로 내 질문을 이해할 수 있습니다.

아래 컨트롤러가 있습니다. 처음로드 할 때 xxx는 객체에 존재하지 않고 det 값은 null이됩니다. 따라서 컨트롤러의 서비스에는 찾을 수 없다는 오류가있을 것으로 예상됩니다. (아래의 컨트롤러 코드를 참조하십시오.)

그러나 페이지의 버튼을 클릭하면 (필자는 HTML 코드가 없기 때문에 필요하지 않다고 생각합니다.) 객체를 채우고 있습니다. 내 예상 출력을 볼 수 있도록 컨트롤러를 다시로드하십시오.

아래의 HTML 컨트롤러를로드 하나가, 내가 무엇을 기대하고 있습니다 것은 그 데이터 NG 모델 = "{{$ 부모. $ root.ParentItems [ 'XXX']. XXX}} "은 컨트롤러의 xxx 값을 업데이트합니다. 실제로는 테스트를 위해 "< span> {{$ parent. $ root.ParentItems [ 'xxx']. detnumber}} </span>"을 사용하고 있기 때문에 실제로 발생합니다.

자, 다시 내 문제는 컨트롤러에 적용된의 "det"값 입니다. 다시로드해야합니다. 내가 생각하는 것은 새 컨트롤러를 만드는 것이지만 코드를 반복하면됩니다. 당신은 'var에 XXX'와 변수를 정의 할 때


// HTML

<div data-ng-switch-when="thisIsIt" ControllerOne data-ng-model="{{$parent.$root.ParentItems['xxx'].xxx}}"></div> 
<span>{{$parent.$root.ParentItems['xxx'].xxx}}</span> 

// ControllerOne

controller: function ($scope, $element, $http) { 

    function par() {    
     var xxx= null; 
     xxx = $scope.$parent.$root.ParentItems['xxx'].xxx; 
     var det = { xxx: xxx};    
     return det; 
    } 


$http.post('/api/values/entries/GoHere', par()).success(function (salData) { 

    var buildSHGraph = function (shData) { 
     //code code codes... 
    } 

    $scope.Array1 = []; 

    angular.forEach(salData, function (evt) { 
     //Code Code Codes 
    }); 

    buildSHGraph($scope.Array1); 

}); 

} 

답변

0

속성의 외부에서 액세스 할 수 없습니다 귀하의 경우에는이 함수의 범위 '파'. 당신은 $로 비동기 작업에서 콜백에서보기를 변경하려고하면

//Do this in success callback function in your ajax request 
$timeout(function() { //$timeout must be setup as dependency in constructor such as $scope and $http 
    $scope.$digest(); 
}); 
1

나는 것은 당신이 사용할 수있는

function par() { 
    this.xxx = null; 
    this.xxx = $scope.$parent.$root.ParentItems['xxx'].xxx; 
} 

는 http.post 당신은 '$ 다이제스트'또는 범위를 '$ 적용'필요 $ rootScope에 값을 전달하십시오. 그런 다음 응용 프로그램에서 값을 전역 적으로 액세스 할 수 있습니다.

아약스에서 값을 다운로드하면 범위/html이 업데이트됩니다.

관련 문제