Вот моя услуга:
var MyService= function () {
var filters, charts, subscription;
return {
getFilters: function () {
return this.filters;
},
setFilters: function (value) {
this.filters = value;
},
getCharts: function () {
return this.charts;
},
setCharts: function (value) {
this.charts = value;
},
getSubscription: function () {
return this.subscription;
},
setSubscription: function (value) {
this.subscription = value;
}
};
};
angular.module('Something').factory('MyService', MyService);
Ваш типичный сервис, который может использоваться для передачи аргументов между контроллерами.
Контроллер A имеет функцию, которая вызывается, когда пользователь выбирает ссылку; функция устанавливает мой элемент в мою службу и использует окно для перенаправления на другую страницу.
$scope.pressedButton = function (subscription) {
MyService.setSubscription(subscription);
$window.location.href = 'newPage.html';
}
Контроллер B для newPage.html должен иметь возможность читать и console.log из myItem из моей службы, однако он говорит, что он не определен.
console.log(MyService.getSubscription()) == undefined.
Кто-нибудь знает, почему? Я использую сеттеры и геттеры, но поскольку я немного ограничен моей маршрутизацией ($ window вместо ui-router или ng-router), мне кажется, что переход на новую страницу - это то, что очищает мой сервис.,
Я лично предпочитаю синтаксис модели $factory
данных $factory
, так как он дает вам псевдо-частные переменные и единую точку доступа для всех этих данных. Это упрощает проверку вашего кода и менее вероятно, что он получит искаженные данные.
Кроме того, если вы собираетесь прокладывать маршрут таким образом, я бы рекомендовал ui-router.
В отдельной службе, где вы делаете set/get, включайте $state
и просто вводите этот файл шаблона в свое представление.
Но синтаксис мудрый, @alwang85 правильный. : +1:
Я считаю, что у вас может быть синтаксис замещения фабрик и сервисов.
myApp.factory('sample', function(){
var obj = {
item: ''
}
return {
getItem: function () {
return obj.item;
},
setItem: function (value) {
obj.item= value;
}
}
}
против службы
myApp.service('sample', function(){
var _item = '';
this.getItem = function () {
return _item;
};
this.setItem = function (value) {
_item = value;
}
}