У меня есть два модуля:
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()
? Я делаю это в службу? Я могу заставить "редактор" зависеть от "теста" (концепция, которую я все еще пытаюсь понять)?
Вам нужна служба для передачи данных. Вот пример, как вы можете попробовать.
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)
})
});
numbers
в качестве значения модуля test1
а затем просто установка test1
в качестве зависимости test2
? Я спрашиваю об этом потому, что в этом примере ( docs.angularjs.org/guide/module ) модуль xmpl.service
кажется, делает это со значением greeter
.
Я думаю, что запустить блоки не место для хранения данных, как правило, место для инициализации приложения, я думаю.
Если у вас есть список номеров, которые вы хотите использовать и модифицировать другими, вы можете использовать сервис, который имеет эти номера в качестве своего свойства, и внедрять эту услугу в любом месте, а так как службы являются singleton, каждый, кто обращается к этой службе, работает с одним и только одним объектом.
вы также можете думать о директивах, у меня есть numbers
в некоторой области, я создаю директиву editor
которая использует two-way
привязку данных для доступа и изменения этого свойства в области.
Надеюсь, поможет
editor
модуля, потому что он собирался редактировать переменнуюnumbers
. Я изменю это для меньшего беспорядка.