所以我用這個REST API與ngResource做得到,查詢,後和更新請求。我正在尋找的是一種爲每個實體定義結構的方法。角資源 - 默認的模型結構
例如,假設我們有:
module.factory('app.entity.item', function($resource) {
return $resource('http://xmpl.io/items/:itemId', { itemId: '@id' });
});
我想它實例化一個控制器,如:
module.controller('AddItemCtrl', ['app.entity.item', function(Item) {
$scope.item = new Item();
});
並將其綁定到模板中的相應表格。
我遇到的實際問題是我必須處理1:m表格。 的實體結構的例子是:
{
"name": "",
"categories": [],
"list": [
{
"value": "",
"list": [
{
"value": "",
"list": [
{
"value": ""
}
]
}
]
}
]
}
(在下面的撥弄更透徹的例子)
現在前兩個字段顯然不是問題。這是第三個。 list
。這些列表中的每一個都可以包含可變數量的項目。
我目前使用ngRepeat和add(type, context)
方法,增加了一個新的字段集的範圍(value
場在這個例子中和孩子列出了前兩個級別),這將是ngRepeat出現在用戶界面,使用戶可以填寫並提交給服務。
首先,我必須定義結構,因此在頁面加載時UI不會爲空。
module.controller('AddItemCtrl', ['app.entity.item', function(Item) {
$scope.item = new Item({
"name": "",
"categories": [],
"list": [
{
"value": "",
"list": [
{
"value": "",
"list": [
{
"value": ""
}
]
}
]
}
]
});
});
但這是多餘的。我必須到處去做! 另一個問題是調用item.$save
時,模型被清空(可能重新實例化?),並且列表屬性(由ngRepeat指令管理)中的字段消失了。
所以我想知道,你會在這種情況下做什麼。 有沒有辦法來定義實體(資源)結構?
示例:http://jsfiddle.net/g15sqd5s/3/
我沒有看到transformRequest被用於什麼;我不確定操縱原型,但它肯定是一個解決方案。 +1和參考。 – Fardin 2015-02-18 09:21:27
transformRequest只是表明還有另一個機會來處理複雜/非標準的案例。 – ciekawy 2015-02-18 10:41:01
啊哈!我意識到這一點,但我認爲這不能解決我的問題。 – Fardin 2015-02-18 13:52:25