2014-10-06 2 views
1

뷰 변수가 onSubmit 이벤트에서 업데이트되지 않는 것 같습니다. API에서 수행 된 호출이 올바른 결과를 얻지 만 제대로 표시하지 않는다는 것을 콘솔에서 볼 수 있습니다.AngularJS : 뷰 변수가 뷰에서 업데이트되지 않음

JS

 angular.module('FooApp') 
    .controller('FooListController', ['$scope', 'FooMapper', 'moment', 'APP_URL', '$location', function($scope, FooMapper, moment, APP_URL, $location) { 


     $scope.submit = function(){ 

      var promise = FooMapper.find($scope.fooName); 

      console.log('-- Search string: '+ $scope.fooName); 
      $scope.isLoading = 0; 
      promise.then(function(foo){ 

       console.log('New Promise foo: ', foo); 
       $scope.fooResults = foo; 

      }) 
     } // end of anonymous function 

} 
]); 

HTML 나는 또한 $ 범위와 시도

<div ng-include="APP_URL + '/view/fooResolver/searchForm.html'" ng-controller="FooListController"> </div> 
    <div ng-if="!isLoading" class="row"> 

     <div ng-if="!fooResults" class="col-md-12"> 
      <div class="alert alert-warning"> 
       No foos found. 
      </div> 
     </div> 

     <div ng-if="fooResults" class="col-md-12"> 

         <tr ng-repeat="foo in fooResults" class="active"> 

          <td> 
           {{foo.id}} 
          </td> 
          <td> 
           <b>{{foo.name}}</b> 
          </td> 
          <td> 
           {{foo.country}} 
          </td> 
    .... 

. $ 적용()하지만 여전히 같은 결과를 얻는. 둘 이상의 스코프가있을 가능성이 있습니까?

감사합니다.

+0

이 정확한지 확인하십시오. 반환 값이 실제 자바 스크립트 객체이고 올바른 형식인지 확인해야합니다. – tommybananas

+0

@ snowman4415 반환 값의 형식이 올바른지, FooResults : {{$ parent. fooResults}}를 사용하여 데이터가 있는지 확인하지만 아직 행운은 없습니다. DhanaKrishnasamy 컨트롤러 끝 부분. – thitami

답변

1

@ 모함마드 Sepahvand는 ng-ifng-include을 사용하여 만든 새 범위에 대해 정확하지만 $parent을 사용하지 않는 것이 좋습니다. 나는 이것이 부서지기 쉽고 유지하기가 더 어려운 코드를 생성 할 수 있다고 생각한다.

하위 범위는 부모 범위의 속성을 프로토 타입 상속을 통해 상속합니다. "모델의 점을두고"에 대한 "오래된"각도 말은 당신이 (당신의 컨트롤러) 부모 범위에 같은 것을 할 제안 :

$scope.model = { fooModel: null }; 

이것은 프로토 타입 상속을 살아남을 것입니다 모델 객체를 선언합니다. "모델에 점"이 없으면 하위 범위의 속성이 상위 범위의 값을 섀도 잉합니다.

$promise이 해결되면 $scope.model.fooModel에 새 값을 설정합니다.

$parent.fooModel을 사용하는 것과 실질적으로 동일한 반면, $parent을 사용하면이 부모 자녀 관계에 따라 달라질 수 있습니다 (더러워집니다). 나중에 HTML 뷰를 리팩토링하여 부모/자식 관계를 더/더 적게 만들면 어떻게됩니까?

+0

답장을 보내 주셔서 감사합니다. 내가 틀렸다면 정정 해주세요, 내 컨트롤러에서 이것을 시도했습니다 : $ scope.model = {fooResults : null}; 작동하지 않습니다. 잘못 이해 했나요? 아직 결과가 표시되지 않지만 테이블 레이아웃이 나타났습니다. – thitami

+0

약속이 해결되면'$ scope.model.fooModel'을 업데이트하여 새 값을 포함합니까? 또한 model.fooModel에서'ng-repeat = "foo가되도록 HTML의'ng-repeat'을 변경해야합니다."... ** OOPS ** : 코드가 "fooResults"를 사용할 때 "fooModel"을 사용했습니다. . 그러나 개념은 여전히 ​​정확합니다. –

+0

추 신 : HTML의 "fooResults"에 대한 다른 참조도 있습니다.이 서식은 새로운 형식으로 변경해야합니다 : "model.fooResults"이 연습의 요점은 객체를 사용해야하는 프로토 타입 상속의 b/c입니다 변수가 다른 범위에서 상속 될 때 "섀도 잉"되는 것을 방지합니다. –

관련 문제