在<div ng-show =“ test.data”>视图中的$ scope。$ broadcast('test',false);`中将false更改为true。

时间:2018-08-21 16:51:02

标签: angularjs

当我将控制器false更改为true或将true更改为false

$scope.$broadcast('test', false);

在控制器视图中,没有更改:

<div ng-show = "test.data">

我不知道为什么。你有个主意。

此处的示例类似: https://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/

(function () {
 'use strict';

 angular
     .module('app')
     .controller('aController', aController);

 function aController($scope) {

     initialize();

     function initialize() {
              set();
     }
     function set() {

        return Service.test()               
            .then(function (data) {

                switch (data.status) {
                    case 'SUCCESS':
                        if ( data.value === false ){  
                            $scope.$broadcast('test', false);
                        } else {
                            $scope.$broadcast('test', true);                            
                        }
                       break;

                    default:
                        $scope.$broadcast('test', true);                         
                        break;
                }

             })
             .catch(function (error) {

             });
     }
    $scope.$on('test', function ($event, data) {

    });


  }

 })();

1 个答案:

答案 0 :(得分:1)

如果有

push(Stats)

在您看来,那么您应该在控制器中执行的操作是:

<div ng-show="test.data">
    ...
</div>

甚至不需要使用function aController($scope) { initialize(); function initialize() { $scope.test = { data: true }; set(); } function set() { Service.test() .then(function (data) { if(data.status === 'SUCCESS') { $scope.test.data = data.value; } else { $scope.test.data = true; } }) .catch(function (error) { }); } }