$scope变量,ng隐藏/显示

$scope variables, ng-hide/show

本文关键字:隐藏 显示 ng scope 变量      更新时间:2023-09-26

我想我遗漏了一些关于$scope的内容。我有一些ng隐藏/显示在顶部导航中有一个变量。在通过应用程序配置功能链接到控制器的ng视图内部。我的导航代码在"导航控制器"中。但我在导航之外的视图中有一个页面链接到"约会控制器",运行负责设置约会的代码。在你完成了一些步骤后,你就可以登录了,这段代码在AppointmentController视图中,但我已经完成了——

编辑-我刚刚意识到,下面的输入必须在一个单独的控制器中。当我将其连接到NavController时,我希望apptLogin()更改主视图数据,这些数据都在一个单独的控制器中。

<input ng-controller="NavController" ng-click="apptLogin(email)" value="Login and Continue" class="btn btn-default pull-left" >
$scope.apptLogin = function(email){
  $http({
    method: 'POST',
    data: {email: email},
    url: '/common_includes/ajax/validateUser.php',
  }).then(function successCallback(response) {
      if(response.data.status == 0){
        var login_message = '<div class="alert alert-danger" role="alert">'+response.data.message+'</div>';
        $('#login_modal .modal-body').html(login_message);
        $('#login_modal').modal();
        $interval(function(){
          $('#login_modal').modal('hide');
        }, 1400, 1);
      }
      if(response.data.status == 1){
        $scope.appt_history = true;
        console.log($scope);
        var login_message = '<div class="alert alert-success" role="alert">'+response.data.message+'</div>';
        $('#login_modal .modal-body').html(login_message);
        $('#login_modal').modal();
        $interval(function(){
          $scope.click_login = false;
          $('#login_modal').modal('hide');
        }, 1400, 1);
      }

代码全部运行。这里的这一行是应该切换隐藏/显示的内容,但它不是。-

$scope.appt_history = true;

如果我感到困惑,因为如果console.log($scope)在上面一行之后,我会看到所有的NavController变量,并且$scope.appt_history确实==true,但hide/show没有改变。我在这里错过了什么?

简单的方法是将$rootScope注入两个控制器,并将共享数据属性放在那里,而不是放在$scope中,但这不是推荐的做法。

但是,我建议使用服务。它们编写简单,使跨控制器共享数据变得轻而易举,而不必污染根范围。

基本上,您首先创建服务,并将要共享的属性添加到其构造函数中

app.service('sharingSvc', function() {
  this.sharedValue = 'initialized';
});

现在,您可以将该服务注入需要访问共享属性的控制器中。

app.controller('pageOneCtrl', function($scope, sharingSvc) {
  $scope.pageOneSare = sharingSvc;
});

这里有一个完整但非常基本的Plnkr,展示了如何使用服务在多个控制器和视图之间共享数据。这应该足以让你开始。希望这能帮到你!