AngularJS - 如何将值配方用作全局变量?

时间:2015-08-26 15:39:13

标签: angularjs

我正在试图弄清楚如何设置变量并在全局范围内使用它。在全球范围内,我只是指在ng-controller 范围之外。

行为很简单。单击“gotologin”div时,必须显示登录表单。注册部分同样如此。

但似乎我在ng-show指令中使用的变量与我使用.value和控制器定义的变量不同。它们都必须相同。

<div class="choose-box" ng-controller="mainController as mcontrol">
   <div class="gotologin" ng-click="mcontrol.gotologin()">Login</div>
   <div class="gotoregister" ng-click="mcontrol.gotoregister()">Register</div>
</div>

<div class="login-form" ng-show="loginclicked === true">
...
</div>
<div class="register-form" ng-show="registerclicked === true">
...
</div>

<script>
    var app = angular.module('myapp', ['ngRoute']);

    app.value("loginclicked" , false);
    app.value("registerclicked" , false);


    app.controller('mainController', function(loginclicked,registerclicked){

    this.gotologin = function (){
        loginclicked = true;
    };
    this.gotoregister = function (){
        registerclicked = true;
    };


    });
</script>

1 个答案:

答案 0 :(得分:0)

您需要将app值注入控制器,如依赖项。

我会这样做:

var app = angular.module('myapp', ['ngRoute']);

app.value('loginInfo', {
    loginclicked: false,
    registerclicked: false
});



app.controller('mainController', mainController);

mainController.$inject = ['$scope', loginInfo];
function mainController($scope,loginInfo){

    $scope.loginInfo = loginInfo;

    this.gotologin = function (){
        $scope.loginInfo.loginclicked = true;
    };
    this.gotoregister = function (){
        $scope.loginInfo.registerclicked = true;
    };
}

Html将为<div ng-show="loginInfo.registerclicked"><div ng-show="loginInfo.loginclicked">