2014-05-19 4 views
0

에 한 번만 작업 나는 내가 그것을 내가 배치 첫 번째 시간을 작동하는 페이지의 여러 부분에 바인딩을 배치하지만 같은 객체 (item, item2, message, messageType)각도 JS 바인딩 페이지

에 결합하는 복수 할 수있는 페이지가 있습니다. 객체가 올바르게 값을 반환하는 아약스 호출로 채워졌습니다. (콘솔에 기록했습니다) 내게 이상한 소리는 <infomessage> 지시어가 앱의 다른 여러 위치에서 (동일한 페이지에서 두 번) 사용되었고 완벽하게 일했습니다.

이러한 바인딩이 작동하지 않는 이유에 대해 알고 계십니까? 난 $watch에 개체를 시도하고 제대로 변경하지만보기

<div class="container" ng-app="MyApp" > 
<div class="row" ng-controller="MyCtrl" > 
    <div class="col-lg-10"> 
     <h3>...</h3> 
    </div> 

    <div class="col-lg-10"> 
     <infomessage type="{{messageType}}" message="{{message}}"></infomessage> 
    </div> 

    <div class="col-lg-10"> 
     Item: {{item.idbene_ext}}/{{item.id}}/{{item.img}}<br> 
     Ubicazione: {{item2.id}} {{item2.code}} 
    </div> 

</div> 
<div class="row" style="margin-top:20px"> 
    <div class="col-xs-1"></div> 
    <div class="col-xs-4" ng-class="{'ubiBox':true,'ausilio-enabled':(item!=null),'ausilio-disabled':(item==null), 'boxfocus':(item==null)}"> 
     <div ng-show="item==null"> 
      <div class="number">1</div> 
      <img src="assets/images/disabled-128.png" width="100" class="img_none"/> 
      <h4> {{item.idbene_ext}} Select an item</h4> 
     </div> 
     <div ng-show="ausilio!=null"> 
      <h4>Item:{{item.idbene_ext}}</h4> 
     </div> 
    </div> 
    <div class="col-xs-2"></div> 
    <div class="col-xs-4" ng-class="{'ubiBox':true,'ubi-enabled':(item!=null),'ubi-disabled':(item==null),'boxfocus':(item!=null) }"> 
     <div ng-show="item==null"> 
      <div class="number">2</div> 
      <img src="assets/images/Office-disabled-128.png" width="100" class="img_none"/> 
      <h4> Select the second item</h4> 
     </div> 
     <div ng-show="item!=null"> 
      <h4>Item2 {{item2.code}}</h4> 
     </div> 
    </div> 
    <div class="col-xs-1"></div> 
</div> 
<div class="row"> 
    <div class="col-lg-10"> 
     <infomessage type="{{messageType}}" message="{{message}}"></infomessage> 
    </div> 

    <div class="col-lg-10"> 
     Item: {{item.idbene_ext}}/{{item.id}}/{{item.img}}<br> 
     Ubicazione: {{item2.id}} {{item2.code}} 
    </div> 
</div> 
여기

는 AngularJS와 코드를

MyApp.controller("MyCtrl",function($scope,$http,Config,BarcodeService){ 
    $scope.iditem2=-1 
    $scope.iditem=-1 

    $scope.item2=null 
    $scope.item=null 

    $scope.message="" 
    $scope.messageType="" 

    $scope.$on(BarcodeService.handleitem2,function(){ 
     $scope.message="" 
     $scope.messageType="" 
     if($scope.item==null){ 
      $scope.message="select an item before" 
      $scope.messageType="error" 
     } 
     $scope.iditem2=BarcodeService.id  

     $http 
      .post(Config.aj,{call:"item2.getitem2",id:$scope.iditem2}) 
      .success(function(data){ 
       $scope.item2=data.payload 
      }) 
    }) 

    $scope.$watch("item",function(){ 
     console.log("---->",$scope.item) 
    },true) 

    $scope.$on(BarcodeService.handleitem,function(){ 
     $scope.message="loading item" 
     $scope.messageType="info" 
     $scope.iditem=BarcodeService.id 
     $http 
      .post(Config.aj,{call:"item.getArticoloByIdMin",id:BarcodeService.id}) 
      .success(function(data){ 
       $scope.message="item loaded!!" 
       $scope.item=data.payload 
      }) 
    }) 
}) 
+0

사용중인 AJAX 코드 게시 – wachme

+0

각도 '$ http'서비스를 사용하고 있습니까? – ivarni

+0

@wachme angularJS를 게시했습니다. 아약스는 JSON을 반환하는 PHP입니다. 콘솔에서 올바르게 기록 할 수 있기 때문에 결과가 정확합니다. – Luke

답변

0

좋아들의 업데이트 된 값을 첫 번째 시간을 사용하는 것입니다 , 알았다! 문제는 애플리케이션에 두 개가 있지만 첫 번째 컨트롤러에만 ng 컨트롤러를 배치했기 때문입니다. 두 번째 div의 모든 바인딩이 컨트롤러 외부에 있기 때문에 실패했습니다. 둘 다 포함 된 상위 div에서 ng 컨트롤러를 이동했는데 이제는 모든 것이 매력처럼 작동합니다. 어쨌든 @wachme 및 @ivarni에게 내 질문을 돌봐 주셔서 감사합니다. 해피 코딩 *