angularjs-ns显示逻辑流程



我是angularjs的新手。我试图根据$scope对象的属性显示一个html元素,但不使用任何表单元素。

这是剪切的代码:

<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>

可以很容易地看到,我在google+登录上更改了$scope.myData.logged的状态,我注意到id为secretContent的div将根据此属性显示或不显示,但我已经看到,ng显示的真实性只评估一次,并且不与属性的实际值绑定,因此,当它更改时,不会发生任何事情。

我的代码出了什么问题?哪一个是ng-show命令的正确逻辑流,以及如何将其绑定到$scope属性?

提前感谢大家。

使用$scope$每当值发生更改时,应用程序()。

$scope$apply()将更新页面内容。

最新更新