AngularJS服务作为单例到存储文件

时间:2017-09-05 08:35:37

标签: angularjs service angular-services

我正在尝试编写一个AngularJS服务,它应该在存储文件中作为单例工作。应该有两种方法:

  • 用于按键 getFilesForTabId
  • 编写文件
  • 用于从 setFilesForTabId
  • 获取已保存的文件

我正在尝试写这样的东西:

app.factory('fileStorage', ['LogService', function (LogService) {

    var fileStorage = {
        this.files = {};

      this.getFilesForTabId = function (key) {
          return this.files[key];
        };
        this.setFilesForTabId = function (key, files) {
            this.files[key] = files;
            return true;
        }
    }
    return fileStorage;

}]);

但这段代码很糟糕。我正在尝试使用它时出错。我怎么写呢?我很感激你的帮助

现在我遇到了 getFilesForTabId 功能的问题。我正在尝试使用未定义的文件[key]对象运行此函数。 我的实际服务代码是:

app.factory('fileStorage', ['LogService', function (LogService) {

    var fileStorage = {

        files: {},
        setFilesForTabId: function(key,files){

            this.files[key] = files;
            return true;

        },
        getFilesForTabId: function (key) {


            if(typeof(files[key]) === undefined) {

                return [];

            }
            else{

                return this.files[key];
            }
        }
    }
    return fileStorage;

}]);

下面我从浏览器显示错误:enter image description here

2 个答案:

答案 0 :(得分:1)

您无法在=对象中使用{}

var fileStorage = 
{
   files: {},
   getFilesForTabId: function (key) {
       return this.files[key];
   },
   setFilesForTabId: function (key, files) {
       this.files[key] = files;
       return true;
   }
};

答案 1 :(得分:1)

您正在尝试将fileStorage初始化为对象,但正在将其编写为函数。您需要使用对象初始化程序语法。

请改为尝试:

app.factory('fileStorage', ['LogService', function(LogService) {

  var fileStorage = {
    files: {},

    getFilesForTabId: function(key) {
      return this.files[key];
    },

    setFilesForTabId: function(key, files) {
      this.files[key] = files;
      return true;
    },
  };

  return fileStorage;

}]);