2014-09-02 4 views
0

나는 angularjs에서 초보자입니다. $ scope 객체의 속성에 따라 html 요소를 표시하려고하지만 양식 요소를 사용하지 않고 표시하려고합니다. angularjs ns-show 로직 흐름

코드의 냈다된다

<div id="ListApp"> 
    <div ng-controller="ListCtrl"> 
     {{ myData.prova }}: {{ myData.logged }} 
     <div id="secretContent" ng-show="myData.logged"> 
      <ul> 
      <li ng-repeat="elemento in lista"> 
       <input type="checkbox" ng-model="elemento.comprato" /> 
       <span ng-if="!elemento.comprato">{{ elemento.nome }}</span> 
       <span ng-if="elemento.comprato" style="text-decoration:line-through;">{{ elemento.nome }}</span> 
      </li> 
      </ul> 
      <input type='text' id='input_nome'/><button ng-click="aggiungi()">Aggiungi</button> 
     </div> 
    </div> 
    </div> 

을 그리고 이것은 컨트롤러 일부입니다

<script> 
    var listaViaggio = angular.module('listApp', ['directive.g+signin']); 
    listaViaggio.controller('ListCtrl', ['$scope',function ListCtrl($scope) { 
    $scope.lista = []; 
    $scope.myData={}; 
    $scope.myData.prova="test"; 
    $scope.myData.logged=0; 
    $scope.aggiungi = function(){ 
    $scope.lista.push({ 
     'nome':document.getElementById("input_nome").value, 
     'comprato':false 
    }); 
    }; 
    $scope.$on('event:google-plus-signin-success', function (event, authResult) {$scope.myData.logged=1;console.log($scope.myData.logged);}); 
    $scope.$on('event:google-plus-signin-failure', function (event, authResult) {$scope.myData.logged=0;console.log($scope.myData.logged);}); 
    }]); 
</script> 
으로 쉽게 볼 수있다

, 나는에 scope.myData.logged $의 상태를 변경 google + 로그인하고 id가 secretContent 인 div가 표시되거나이 속성에 따라 표시되지 않을 것이라고 생각하지만 ng-show의 진실성은 한 번만 평가되고 실제 값에 바인딩되지 않습니다. 그래서 재산이 변경되면 아무 일도 일어나지 않습니다.

내 코드가 잘못 되었나요? ng-show 명령의 올바른 논리 흐름과 $ scope 속성에 바인딩하는 방법은 무엇입니까?

미리 감사드립니다.

+1

'$ on' 콜백에서'$ scope. $ apply()'를 사용할 필요가 있습니다. –

+0

위대한 작품! 고맙습니다. 그냥 질문 : 양방향 데이터 바인딩이이 경우에 작동하지 않는 이유는 무엇입니까? – luca3003

답변

1

값이 변경 될 때마다 $ scope. $ apply()를 사용하십시오.

$ scope. $ apply()는 페이지 콘텐츠를 업데이트합니다.

+0

이것이 작동하는 동안 이것은 추악하고 버그가있다 – astroanu

+0

안녕 astro, 당신은 정확하게 무엇을 의미합니까? 어느 것이 당신을위한 최선의 방법입니까? 나는 초보자이며 각 공헌은 높이 평가됩니다. 고맙습니다. – luca3003