Сохранить несколько данных в массиве обслуживания из контроллера?

0

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

Функциональность такова:

  1. Пользователь нажимает на элемент списка, который будет инициализировать функцию registerChat, которая будет хранить данные чата в массиве.
  2. Чат отобразит данные, используя функцию getChat.
  3. Пользователь может нажать несколько элементов чата для хранения большего количества данных в массиве.
  4. killChat будет выполняться при использовании кликов, закрывающих элемент чата.

Обслуживание:

app.factory('chatbox',['$http',function($http){

  var total_chats = 0;
  var registeredChats = [];

  var registerChat = function(userid) {
    //Places Chat into variable
  };

  var getChat = function(userid) {
    //Gets Chat for the Controller
  };

  var killChat = function(userid) {
    //Gets Chat from Variable
  };

}]);

Я хотел бы иметь возможность хранить данные в этой службе от любого контроллера, содержащего эту службу?

Теги:
arrays

3 ответа

0

Попробуй это:

app.factory('chatbox',['$http',function($http){

 var total_chats = 0;

  var registeredChats = [];

  var registerChat = function(userid) {
    //Places Chat into variable
    registerChat.push(userId);
    total_chats = total_chats + 1;
  };

  var getChat = function(userid) {
    //Gets Chat for the Controller
    return registered_chats;
  };

  var killChat = function(userid) {
    //Gets Chat from Variable
    ... you get the idea
  };

  var toReturn = {
    getChat: getChat,
    registerChat: registerChat,
    killChat: killChat
};

return toReturn

}]);

0

Вот как я это сделаю:

app.service('chatbox',['$http',function($http){
  var service = {
      getChats : getChats,
      setChats : setChats
  };
  return service;

  var total_chats = 0;
  var registeredChats = [];

  function getChats(){
      //Insert logic here
  }

  function setChats(){
      // Insert logic here
  }


}]);
  • 0
    И получить жалобы от jslint :) для объявления функций после использования
  • 0
    jslint глуп в этом случае. Мне все равно, если мои функции подняты. Так понятнее
0

Вам нужно, чтобы ваши функции определялись как члены службы. Таким образом, не var а this.

  this.registerChat = function(userid) {
    //Places Chat into variable
  };

  this.getChat = function(userid) {
    //Gets Chat for the Controller
  };

  this.killChat = function(userid) {
    //Gets Chat from Variable
  };

Затем вы сможете использовать chatbox в контроллере

 angular.controller('Controller1', function($scope, chatbox){ 
      $scope.kill = function(userId, chat){
          chatbox.killChat(userId, chat);
      }
 })

Ещё вопросы

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