Вызовите один контроллер под другим контроллером в angularjs

0

Я хочу позвонить Homecontroller в LoginController. ниже приведен код обоих контроллеров:

//Login controller
    app.controller('LoginController', function ($scope, $cookieStore) {
        $cookieStore.put('email','[email protected]');
        // need to call Homecontroller here
    });

// Home controller
app.controller('HomeController', function ($scope, $cookieStore, $location) {


      if ($cookieStore.get('email') != null) {
            $scope.wecomeMessage = $cookieStore.get('email');
        }
        else
        {
            $scope.wecomeMessage = "";
        }
    });
Теги:
controller

1 ответ

0
Лучший ответ

Я думаю, вы неправильно поняли ответственность диспетчеров в угловой.

Как использовать контроллеры из угловых документов:

Используйте контроллеры для:

  • Задайте начальное состояние объекта $ scope.

  • Добавить поведение объекта $ scope.

Не используйте контроллеры для:

  • Манипулирование DOM - Контроллеры должны содержать только бизнес-логику.
  • Помещение любой логики представления в контроллеры значительно влияет на ее тестируемость.
  • Угловой имеет привязку данных для большинства случаев и директивы для инкапсуляции ручных манипуляций с DOM.
  • Ввод формата - вместо этого используйте элементы управления угловой формой.
  • Выход фильтра. Вместо этого используйте угловые фильтры.
  • Копировать код или состояние через контроллеры. Вместо этого используйте угловые сервисы.
  • Управляйте жизненным циклом других компонентов (например, для создания экземпляров службы).

Поэтому, если вы хотите создать некоторый блок многоразового кода, вам просто нужно создать угловое обслуживание, которое будет включать функцию с необходимой логикой. Затем вы можете ввести его на оба контроллера, и они будут иметь необходимую функциональность.

Пример:

app.controller('LoginController', function ($scope, $cookieStore, helperService) {
    $cookieStore.put('email', '[email protected]');

    $scope.wecomeMessage = helperService.getMessage();

});

// Home controller
app.controller('HomeController', function ($scope, $cookieStore, $location, helperService) {

    $scope.wecomeMessage = helperService.getMessage();
 });


app.service('helperService', function ($cookieStore) {

    this.getMessage = function () {
        return $cookieStore.get('email') != null ? $cookieStore.get('email') : "";
    };

});
  • 0
    Хорошо, спасибо, но в вышеупомянутой программе мне нужно обновить только $scope.wecomeMessage который $scope.wecomeMessage на $cookieStore.get('email') и это не зависит от какой-либо службы. проблема заключается в обновлении приветственного сообщения $scope.wecomeMessage
  • 0
    Как я понял, вы хотите обновить $scope.welcomeMessage в обоих контроллерах, зависит от того, что находится внутри `$ cookieStore.get ('email'), да?
Показать ещё 11 комментариев

Ещё вопросы

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