我认为这是一个简单的解决方案,但似乎无法实现这一点。
我有一个对象的arrayList,我通过html上的ng-repeat运行。 在每一行我添加一个按钮,调用保存到api服务器。这将从数据库中返回我想在视图中的数组中更新的Id。虽然我似乎无法找到办法。
我无法使用$ index,因为我正在过滤我显示的项目,因此$ index与数组索引不匹配。
控制器:
vm.developmentItems = [];
service.getItems().then(function (results) {
vm.developmentItems = results;
});
function saveItem(item) {
service.updateOrCreate(item)
.then(function (newId) {
//Need to update the viewmodel here.
//Tried sending in the $index but because I'm filtering the $index doesn't match the array.
item.id = newId; //Tried this
});
}
HTML:
<tr data-ng-repeat="item in vm.developmentItems | filter: {filter: cat.id}">
<td>{{item.name}}</td>
<td><button type="button" data-ng-click="vm.saveItem(item)"></button></td>
</tr>
所以我认为如果我可以基于跟踪标签更新数组中的项目和角度使用,也许我可以这样做。我可以做一个foreach数组,但是想知道是否有一些使用angular的快速方法,因为我有标签。
答案 0 :(得分:2)
如果您只想用newId更新现有的developmentItem,那么我只需找到数组中的当前项并使用该索引进行更新。
vm.developmentItems = [];
service.getItems().then(function (results) {
vm.developmentItems = results;
});
function saveItem(item) {
service.updateOrCreate(item)
.then(function (newId) {
//Need to update the viewmodel here.
//Tried sending in the $index but because I'm filtering the $index doesn't match the array.
var currentIndex = vm.developmentItems.indexOf(item);
vm.developmentItems[currentIndex].id = newId;
});
}