Я пытаюсь выяснить, как установить переменную и использовать ее глобально. В глобальном масштабе я имею в виду только вне области ng-controller.
Поведение очень простое. Когда клик "gotologin" нажат, появится форма входа в систему. То же самое касается раздела регистров.
Но, похоже, переменные, которые я использовал в директиве 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>
Вы должны установить значения в области, например:
$scope.loginclicked = false;
....
$scope.gotologin = function (){
$scope.loginclicked = true;
};
Изменение: или попробуйте трансляцию события со значением, которое вам нужно, и на другом контроллере прослушивайте это событие.
Вам нужно вводить значения приложения в контроллер, как зависимость.
Я бы сделал это следующим образом:
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">
$scope
но это не сработало. Я считаю, что проблема не в контроллере. Переменная, которую я использовал внутри html-страницы в директивеng-show
отличается от той, которую мы определили в нашем файле js