#angularjs
#angularjs
Вопрос:
У меня есть приложение angular, и я хочу сохранить некоторые значения между контроллерами, использующими службу angular
Вот мой базовый контроллер:
(function () {
var app = angular.module("MyApp", ["ui.router"]);
app.controller("BaseCtrl", ["$scope", "$http", "$state", BaseControllerFunc]);
function BaseControllerFunc($scope, $http, $state) {
....
}
})();
Теперь я хочу добавить службу, которую позже смогу заполнить данными пары ключ-значение. Итак, я попытался добавить следующее:
app.service("DataService", function () {
var data_item = {};
data_item.Key =MyKey;
data_item.Value=MyValue;
this.MyData.push(data_item);
});
и теперь это выглядит так:
(function () {
var app = angular.module("MyApp", ["ui.router"]);
app.controller("BaseCtrl", ["$scope", "$http", "$state", BaseControllerFunc]);
function BaseControllerFunc($scope, $http, $state) {
....
}
app.service("DataService", function () {
var data_item = {};
data_item.Key =MyKey;
data_item.Value=MyValue;
this.MyData.push(data_item);
});
})();
Здесь я застрял. Как бы я мог ввести значения (MyKey и myValue) в свой сервис? Я новичок в Angular, поэтому это усложняет задачу
Ответ №1:
Попробуйте добавить функции для обработки ваших данных.
app.service("DataService", function () {
var myData = [];
function addItem(key, value){
var data_item = {Key: key, Value: value);
myData.push(data_item);
}
function getData(){
return myData;
}
return {
add: addItem,
get: getData
}
});
В вашем контроллере используйте его как
DataService.add('key', 'value');
DataService.get();
Ответ №2:
измените его на
app.service("DataService", function () {
var data_item = {};
return{
function somename(MyKey,MyValue){
data_item.Key =MyKey;
data_item.Value=MyValue;
this.MyData.push(data_item);
}
}
});
и из вашего контроллера вызывайте его как
DataDervice.somename(MyKey,MyValue)
Комментарии:
1. Куда мне поместить этот код? Я попытался добавить ваш код в то же место, где я добавил свой код выше, и он подчеркивает имя возвращаемой функции
somename