将$ scope变量赋值给普通变量

时间:2015-11-26 18:18:05

标签: html angularjs ionic

我正在尝试用Angular JS / Ionic做一个简单的程序,它将检查从两个不同模板分配的2个范围变量(Plunker

.controller('personCtrl', function($scope , $rootScope) {    

    $scope.user = "";
    $scope.pass = "";
    $rootScope.reguser = "";
    $rootScope.regpass = "";
    $scope.url = "";

    $rootScope.regusername = function() {
        return $rootScope.reguser;
    };
    $rootScope.regpassword = function() {
        return $rootScope.regpass;
    };

    $scope.username = function() {
        return $scope.user;
    };
    $scope.password = function() {
        return $scope.pass;
    };

    $scope.check = function() {

        if ($scope.reguser == $scope.user && $scope.regpass == $scope.pass) {
            $scope.url = "googlemaps.html";
        }
    };
})

我尝试了$ rootscope因为我认为它会返回值,但它没有用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不确定您的问题是什么意思,但我想您正在询问如何跨模板共享$ scope变量的分配。我不确定离子是如何工作的,但我很确定这不能在AngularJS中完成,因为当每个模板渲染时,personController会重新初始化。

您的应用存在以下几个问题:

  1. 您的"创建帐户"应该拥有它自己的控制器和"登录"页面应该有另一个控制器。
  2. 更正后,正确的方式跨控制器(而不是模板)共享变量是使用Angular Services。
  3. 我不会详细说明如何做到这一点,我会将其作为练习。

答案 1 :(得分:0)

与前一个问题一样,我对你的要求并不是100%肯定。但是,看起来您正试图在控制器之间找到某种通信。

对于这种类型的通信,您应该使用来自一个控制器的$ broadcast和另一个控制器中的$ on:

  1. 使用$ watcher检测第一个控制器中变量的变化
  2. 每次变量发生变化时,都会发送$ broadcast,
  3. 事件
  4. 在第二个控制器中,使用$ on,
  5. 监听事件
  6. 在第二个控制器的$ on内的回调函数中,更新此控制器的$ scope中的变量。
  7. 希望这有帮助。