我想在我的控制器之間共享數據。我來自C#環境,並且習慣於創建一個包含私有成員的類以及用於檢索和操作/存儲數據的一些方法。角度創建數據存儲器/存儲庫
這裏是什麼,我心裏有一個超級簡單的例子
public class MyRepository
{
private List<string> Items { get; set; }
public MyRepository()
{
Items = new List<string>();
}
public List<string> Get()
{
return Items;
}
public string GetById(int Id)
{
return Items[Id];
}
public void AddItem(string sNewItem)
{
Items.Add(sNewItem);
}
public void DeleteItems()
{
Items.Clear();
}
}
現在回來角度,我做了一些研究,發現,爲了能夠共享數據(創建上述上面的存儲庫)我必須創建一個名爲Service
的東西。好吧,沒問題我跟着一個指南,並提出這樣的事情:
angular.module("IP-APP", ["ngRoute"])
.factory("Item", function() {
var savedItem = {};
function set(newItem) {
savedItem = newItem;
};
function get() {
return savedItem;
};
return {
set: set,
get: get
};
})
我可以後注入我的控制器。在我嘗試定義我自己的方法(如GetById
)之前,這一切都很好。突然角返回.GetById is not a function
然後我的問題是 - 是否有可能以我已經提到的方式創建一個存儲庫(能夠定義自定義函數,如GetById)?如果是,如何正確執行?
在這個問題上的任何幫助將不勝感激。
謝謝您的回答!您的礦山解決方案有什麼區別?我使用工廠,而您使用服務 –
所有服務都是單身;他們會在每個應用程序中實例化一次。它們可以是任何類型的,不管它是原始的,對象文字,函數還是自定義類型的實例。價值,工廠,服務,常量和提供者方法都是提供者。他們教噴油器如何實例化服務。除了這個區別之外,還要注意'getById'的不同之處。使用數組時,您可以使用該鍵。如果id不存在,請務必添加正確的處理。 –
除此之外,我還沒有看到您的更新答案,因爲我正忙於爲您發佈的問題提供解決方案。也許它派上用場:) –