Передача данных между модулями / контроллерами angularjs

Итак, у меня есть два модуля, каждый со своим контроллером, и мне нужно передать объект между ними, я видел, что это можно сделать с помощью службы, я пробовал кое-что, но все время получаю ошибку «$ injector» во втором модуль / контроллер. Пожалуйста, помогите исправить это. Это мой первый модуль / контроллер со своим сервисом:

var appIndex = angular.module("AppIndex", ['datatables', 'datatables.bootstrap', 'ui.select']);
appIndex.service('sharedData', function () {
    this.data = {};
    this.setData = function (newData) {
        this.data = newData;
        return this.data;
    };
    this.getData = function () {
        return this.data;
    };
});
appIndex.controller("IndexController", function ($scope, $http, $window, sharedData) {
    sharedData.setData($scope.referencia);
});

А это мой второй модуль / контроллер:

var appCna = angular.module("AppCna", ['ui.select', 'AppIndex']);
appCna.controller("CnaController", function ($scope, $http, $window, sharedData) {
    $scope.referencia = sharedData.getData();
});
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
0
19
2

Ответы 2

Вам нужно вызвать setData в вашем первом контроллере

appIndex.controller("IndexController", function ($scope, $http, $window, sharedData) {
    sharedData.setData($scope.referencia);
});

Хорошо, я уже сделал это, но продолжаю получать эту ошибку: Неперехваченная ошибка: [$ injector: modulerr]

Alberto 01.05.2018 20:31

вам нужно проверить, добавили ли вы все ссылки в index.html

Sajeetharan 01.05.2018 20:32

извините, но что вы имеете в виду?

Alberto 01.05.2018 20:34

любые ссылки (файлы javascript), необходимые для ваших зависимостей, таких как таблицы данных и т. д.

Sajeetharan 01.05.2018 20:35

ОЙ! да, я сделал это, индексный файл в порядке, я проверил, работает ли служба, распечатав объект $ scope.reference, и он работает, ошибка появляется на второй странице (cna.html), похоже, я ввожу индекс. js или неправильно обслуживает файл cns.js

Alberto 01.05.2018 20:38

ну, это может быть проблемой, иначе код выглядит нормально

Sajeetharan 01.05.2018 20:39

Я имею в виду, что когда вам нужно использовать службу, объявленную в другом модуле, вы вводите этот модуль как зависимость, а затем вставляете службу в свой контроллер, верно?

Alberto 01.05.2018 20:41

Мне пришлось ввести в файл cna.js все зависимости файла index.js (он содержит объявление службы), и тогда он не вызывал никаких ошибок, но все равно не работал, поэтому теперь я думаю об использовании функции localStorage вместо , и отказ от обслуживания :( Но большое спасибо за ваше время и внимание

Alberto 03.05.2018 01:33

Итак, в конце концов я, наконец, перестаю пытаться использовать службу для моей цели передачи объекта между двумя модулями, и я использовал функцию LocalStorage.

Другие вопросы по теме