Angularjs 使用工厂创建多个缓存对象

Angularjs 使用工厂创建多个缓存对象,angularjs,Angularjs,我有一个工厂包装Angular的$cacheFactory。控制器使用工厂创建两个独立的缓存,但是我得到以下错误:cacheManager不是一个函数。这个代码怎么了 HTML 这是实现该技巧的代码,工厂需要返回一个函数,以允许控制器执行新的操作。此外,需要使用prototype关键字定义方法: var app = angular.module('app',[]); app.controller('myCtl', function ($scope,cacheManager) { va

我有一个工厂包装Angular的
$cacheFactory
。控制器使用工厂创建两个独立的缓存,但是我得到以下错误:
cacheManager不是一个函数
。这个代码怎么了

HTML


这是实现该技巧的代码,工厂需要返回一个函数,以允许控制器执行新的操作。此外,需要使用
prototype
关键字定义方法:

var app = angular.module('app',[]);

app.controller('myCtl', function ($scope,cacheManager) {

    var cache1 = new cacheManager();
    var cache2 = new cacheManager();

    cache1.create("cache1");
    cache2.create("cache2");

    cache1.add("key1", "value1");
    cache2.add("key2", "value2");

    alert(cache1.get("key1"));


})

.factory('cacheManager',function($cacheFactory){

    var factory = function() { };

    factory.cache = null;

    factory.prototype.create = function(cacheId){  
        cache = $cacheFactory(cacheId); 
        return cache;
    };

    factory.prototype.add = function(key,value){
        if (!cache)
            return;
        cache.put(key, value);
    }

    factory.prototype.get = function(key){
        if (!cache)
            return;
        return cache.get(key);
    }

    return factory;

});

cacheManager是一个对象,而不是一个函数()


我认为不应该创建cacheManager的多个实例,而应该创建多个缓存对象,并向不同的缓存对象添加多个键/值

var cache1 = cacheManager.create("cache1");
    var cache2 = cacheManager.create("cache2");
缓存1.添加(“键1”、“值1”);
缓存2.添加(“键2”、“值2”)

我认为这就是您要寻找的:您可以在cache1和cache2上添加多个键/值。像cache1.add('key11','11');cache1.添加('key22','22');cache1.添加('key33','33');
var app = angular.module('app',[]);

app.controller('myCtl', function ($scope,cacheManager) {

    var cache1 = new cacheManager();
    var cache2 = new cacheManager();

    cache1.create("cache1");
    cache2.create("cache2");

    cache1.add("key1", "value1");
    cache2.add("key2", "value2");

    alert(cache1.get("key1"));


})

.factory('cacheManager',function($cacheFactory){

    var factory = function() { };

    factory.cache = null;

    factory.prototype.create = function(cacheId){  
        cache = $cacheFactory(cacheId); 
        return cache;
    };

    factory.prototype.add = function(key,value){
        if (!cache)
            return;
        cache.put(key, value);
    }

    factory.prototype.get = function(key){
        if (!cache)
            return;
        return cache.get(key);
    }

    return factory;

});
        cacheManager.create("cache1");
        cacheManager.create("cache2");

        cacheManager.add("key1", "value1");
        cacheManager.add("key2", "value2");
var cache1 = cacheManager.create("cache1");
    var cache2 = cacheManager.create("cache2");