Как мне получить доступ к объекту в другом модуле AngularJS?

0

У меня есть два модуля:

angular.module('test1', [])
    .run(function() {
        var numbers = [1, 2, 3,4];
        // do more operations on numbers here
    });

angular.module('test2', [])
    .run(function() {
        // I want to edit or iterate over numbers here
    });

Я хочу иметь возможность редактировать переменные numbers в модуле test2. Я чрезвычайно новичок в Angular, поэтому кажется, что самый простой способ сделать это - положить числа в $ rootcope, но это не кажется слишком желательным.

Какой самый идиоматический способ достичь этого? Делаю ли я число .value()? Я делаю это в службу? Я могу заставить "редактор" зависеть от "теста" (концепция, которую я все еще пытаюсь понять)?

  • 0
    Можете ли вы дать больше разъяснений о вашей проблеме? Вы хотите написать редактор?
  • 0
    Это в значительной степени проблема. У меня есть переменная в одном модуле, которую я хочу добавить в другой модуль. Я назвал editor модуля, потому что он собирался редактировать переменную numbers . Я изменю это для меньшего беспорядка.
Показать ещё 1 комментарий
Теги:

2 ответа

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

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

var app = angular.module('app', ['access','test1','test2']);
angular.module('access', [])
    .service('accessService', function() {
        this.numbers = [1, 2, 3,4];
        // do more operations on numbers here
    });

angular.module('test1', [])
    .run(function(accessService) {
        var numbers = accessService.number;
        // do more operations on numbers here
    });

angular.module('test2', [])
    .run(function(accessService) {
       accessService.numbers.forEach(function(number){
         console.log(number)
       })
    });
  • 0
    Спасибо за ответ, Джоавар. Будет ли работать установка numbers в качестве значения модуля test1 а затем просто установка test1 в качестве зависимости test2 ? Я спрашиваю об этом потому, что в этом примере ( docs.angularjs.org/guide/module ) модуль xmpl.service кажется, делает это со значением greeter .
  • 0
    Добро пожаловать!! Вы можете принять мой ответ, если вы достигли своей цели с моим ответом :-)
Показать ещё 5 комментариев
1

Я думаю, что запустить блоки не место для хранения данных, как правило, место для инициализации приложения, я думаю.

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

вы также можете думать о директивах, у меня есть numbers в некоторой области, я создаю директиву editor которая использует two-way привязку данных для доступа и изменения этого свойства в области.

Надеюсь, поможет

Ещё вопросы

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