Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs显示逻辑流_Javascript_Angularjs_Angularjs Scope_Ng Show - Fatal编程技术网

Javascript angularjs显示逻辑流

Javascript angularjs显示逻辑流,javascript,angularjs,angularjs-scope,ng-show,Javascript,Angularjs,Angularjs Scope,Ng Show,我是angularjs的新手。我试图根据$scope对象的属性显示html元素,但不使用任何表单元素 这是截取的代码: <div id="ListApp"> <div ng-controller="ListCtrl"> {{ myData.prova }}: {{ myData.logged }} <div id="secretContent" ng-show="myData.logged"> <

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

{{myData.prova}}:{{myData.logged}
  • {{elemento.nome}} {{elemento.nome}}
阿吉翁吉
这是控制器部分:

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

var listaViaggio=angular.module('listApp',['directive.g+signin']);
控制器('ListCtrl',['$scope',函数ListCtrl$scope){
$scope.lista=[];
$scope.myData={};
$scope.myData.prova=“测试”;
$scope.myData.logged=0;
$scope.aggiungi=函数(){
$scope.lista.push({
“nome”:document.getElementById(“input_nome”).value,
“comprato”:错误
});
};
$scope.on('event:google plus signin success',函数(event,authResult){$scope.myData.logged=1;console.log($scope.myData.logged);});
$scope.$on('event:google plus signin failure',函数(event,authResult){$scope.myData.logged=0;console.log($scope.myData.logged);});
}]);
显而易见,我在google+登录时更改了$scope.myData.logged的状态,我认为id为secretContent的div将根据此属性显示或不显示,但我看到ng show的真实性仅评估一次,并且不绑定到属性的实际值,因此,当它更改时,什么也没发生

我的代码有什么问题?ng show命令的正确逻辑流是什么?如何将其绑定到$scope属性

提前感谢大家。

每当值发生更改时,请使用$scope.$apply()


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

需要在
回调中的
$on中使用
$scope.$apply()
。太好了,它可以工作了!非常感谢你。只是一个问题:为什么双向数据绑定在这种情况下不起作用?嗨,astro,你到底是什么意思?哪种方式对你最好?我是一个新手,非常感谢我的每一个贡献。非常感谢。