나는 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 속성에 바인딩하는 방법은 무엇입니까?
미리 감사드립니다.
'$ on' 콜백에서'$ scope. $ apply()'를 사용할 필요가 있습니다. –
위대한 작품! 고맙습니다. 그냥 질문 : 양방향 데이터 바인딩이이 경우에 작동하지 않는 이유는 무엇입니까? – luca3003