Служба Angular и ввод значений

#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