所以我用这个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