2016-08-17 25 views
0

我想要做的只是一次 - 僅從資源加載一個對象,該對象將成爲我的服務稍後服務的各種調用的常量模板上。我想我的服務工廠函數會是這個樣子:

function assetService($resource, DataConstants){ 
    var assetTemplate = $resource(DataConstants.PATH_GET_ASSET).get({}); 
    return { 
     createAsset: createAsset 
    }; 

    function createAsset(subscription){ 
     var Asset = $resource("/assets"); 
     var newAsset = new Asset(assetTemplate); 
     newAsset.serialNo = subscription.serialNumber; 
     return newAsset.$save().$promise; 
    } 
} 

我在想,我的代碼有問題......如果什麼初始化assetTemplate我的$資源代碼失敗?我能否就一次性初始化我的服務中反覆使用的變量的最佳方式得到一些建議?

+0

'$ resource'是一個API抽象層。由於你的數據是不變的,你只需要使用'$ localStorage','$ sessionStorage'或'$ cookies'來持久化數據。 –

+0

我寧願讓assetTemplate只在assetService中可用。我認爲$ localStorage和$ sessionSorage和$ cookies的價值更普遍。 –

回答

0

最好的方法是使用服務或localStorage。這樣變量可以持久。您需要在需要訪問數據的任何地方注入該服務。

+0

localStorage聽起來超出我的需要。我不需要在我的assetService之外可用的變量。可能我所要實現的只是在應用程序啓動時獲取模板的值。爲這個實現細節創建另一個服務是我唯一的選擇嗎? –

+0

LocalStorage將在頁面刷新時保持不變。如果你堅持不變的數據,那麼一個服務就沒問題。 –