2014-01-17 100 views
1

有沒有辦法使$資源操作之一(例如isArray或緩存)變爲動態?

HTML

terminalsResource.findTerminals({cached: true}, function (data) { 
         $scope.terminals = data; 
        }, function (response) { 

JS

//Where to add dynamic properties? 
    return $resource("rest/terminals", {useCache:'@cached'}, { 
     /** 
     * @method findTerminals 
     * Find all terminals 
     * @return {Array} Terminals 
     */ 
     findTerminals: { method: "GET", isArray: true, cache: useCache} 

    }); 

上面的代碼不工作,但它的形狀是我wan't做

回答

1

具體到高速緩存中的圖像:我會說你的代碼應該工作,因爲cache是你的GET操作支持的屬性。它期望使用$cacheFactory構建布爾或緩存實例。

http://docs.angularjs.org/api/ngResource.$resource

緩存 - {布爾|緩存} - 如果爲true,默認的$ HTTP緩存將用於緩存的GET請求,否則如果與$ cacheFactory內置緩存實例,這緩存將用於緩存。

,我能想到的,爲什麼你的代碼不能正常工作的唯一的事情是,通過{useCache:'@cached'}給定的boolean不是在使用它作爲action.cache正確的時間取出。


這樣,因爲你是在你打電話給你具體的服務工廠功能的時間構建$resource它絕對應該工作。 不是測試這個,但應該顯示的想法。

.factory('Terminal', function($resource){ 
    var Terminal = {}; 

    Terminal.findTerminals = function(params, useCache) { 
    return $resource("rest/terminals", params, { 
     /** 
     * @method findTerminals 
     * Find all terminals 
     * @return {Array} Terminals 
     */ 
     findTerminals: { method: "GET", isArray: true, cache: useCache} 
    }); 
    } 

    return Terminal; 
}); 

然後:

Terminal.findTerminals({}, true, function (data) { 
    $scope.terminals = data; 
}, function (response) {  
+0

是的,這是唯一的工作方式至今。我的「解決方案」;我只是在資源中添加了2個方法:findTerminalsCache和findTerminalsNoCache – Vincent