AngularJS - Как использовать значение рецепта в качестве глобальной переменной?

0

Я пытаюсь выяснить, как установить переменную и использовать ее глобально. В глобальном масштабе я имею в виду только вне области 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>
Теги:

2 ответа

0

Вы должны установить значения в области, например:

$scope.loginclicked = false;
....
$scope.gotologin = function (){
    $scope.loginclicked = true;
};

Изменение: или попробуйте трансляцию события со значением, которое вам нужно, и на другом контроллере прослушивайте это событие.

  • 0
    Пробовал использовать $scope но это не сработало. Я считаю, что проблема не в контроллере. Переменная, которую я использовал внутри html-страницы в директиве ng-show отличается от той, которую мы определили в нашем файле js
  • 0
    Попробуйте осмотреть области, для этого есть расширение Chrome, и вы можете определить, есть ли несколько областей, где хранятся эти переменные.
0

Вам нужно вводить значения приложения в контроллер, как зависимость.

Я бы сделал это следующим образом:

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">

  • 0
    Гм .. это не работает. Не могли бы вы показать демо?
  • 0
    Сожалею. Исправлены некоторые проблемы с синтаксисом. Моим главным моментом было то, что вам нужно ввести его. Я обновил свой ответ. Дайте мне знать конкретные ошибки, с которыми вы столкнулись.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню