AngularJS 在 ng-repeat 中编辑并保存值
AngularJS edit and save values inside ng-repeat
我正在开发我的第一个 angular 应用程序,我不知道处理这个问题的最佳方法。
我有一个很长的层次结构 json 因为数据库的 table 就像一个金字塔,看起来类似于:
我使用 ng-repeat 很好地表示了视图,我希望能够编辑最后 table 的最后一行,它对应于 JSON.[=15 的最后一层=]
为了做到这一点,我实现了一个工作正常的编辑模式,它完美地保存和更新了数据库,问题是要看到更新的值我必须刷新页面丢失滚动位置和折叠手风琴这是非常不好。
手风琴图片:
当我点击编辑图标时,承诺存储在 $scope.objEdit = {} 中;对象并启动模态,它通过 ng-model 链接到该对象。
所以我认为下一步是当模态关闭时,我必须覆盖 $scope 变量中的旧对象,该变量包含已编辑对象的整个 json,但我不确定怎么做。
非常感谢您帮助我学习执行此操作的标准方法,thx mates。
我刚刚解决了它,我使用了与@AnikIslamAbhi sugested 的 oen 类似的程序,在@Harshad 在评论中分享的 fiddle 已解决,但我有一个更困难的 json 来处理,我不得不使用类似的东西来获取 json 的所有级别的索引:
$scope.positionEvaluacion = $scope.dataEvaluacion.indexOf(args.levelOne);
$scope.positionAsignaturaevaluacion = $scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion.indexOf(args.levelTwo);
$scope.positionTarea = $scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion[$scope.positionAsignaturaevaluacion].tarea.indexOf(args.levelThree);
然后用编辑过的对象覆盖这个对象:
$scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion[$scope.positionAsignaturaevaluacion].tarea[$scope.positionTarea] = $scope.objEdit;
你可以试试这个程序
- 将编辑点击时选择的对象从 UI 传递到 Controller。
- 克隆它并将该对象传递给模态。
- OnModal 关闭将模态对象传回 UI。
- 将模态对象的值复制到之前选择的对象中
像这样
for(var i in modalObj){
selectedObj[i]=modalObj[i];
}
我正在开发我的第一个 angular 应用程序,我不知道处理这个问题的最佳方法。
我有一个很长的层次结构 json 因为数据库的 table 就像一个金字塔,看起来类似于:
我使用 ng-repeat 很好地表示了视图,我希望能够编辑最后 table 的最后一行,它对应于 JSON.[=15 的最后一层=]
为了做到这一点,我实现了一个工作正常的编辑模式,它完美地保存和更新了数据库,问题是要看到更新的值我必须刷新页面丢失滚动位置和折叠手风琴这是非常不好。
手风琴图片:
当我点击编辑图标时,承诺存储在 $scope.objEdit = {} 中;对象并启动模态,它通过 ng-model 链接到该对象。
所以我认为下一步是当模态关闭时,我必须覆盖 $scope 变量中的旧对象,该变量包含已编辑对象的整个 json,但我不确定怎么做。
非常感谢您帮助我学习执行此操作的标准方法,thx mates。
我刚刚解决了它,我使用了与@AnikIslamAbhi sugested 的 oen 类似的程序,在@Harshad 在评论中分享的 fiddle 已解决,但我有一个更困难的 json 来处理,我不得不使用类似的东西来获取 json 的所有级别的索引:
$scope.positionEvaluacion = $scope.dataEvaluacion.indexOf(args.levelOne); $scope.positionAsignaturaevaluacion = $scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion.indexOf(args.levelTwo); $scope.positionTarea = $scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion[$scope.positionAsignaturaevaluacion].tarea.indexOf(args.levelThree);
然后用编辑过的对象覆盖这个对象:
$scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion[$scope.positionAsignaturaevaluacion].tarea[$scope.positionTarea] = $scope.objEdit;
你可以试试这个程序
- 将编辑点击时选择的对象从 UI 传递到 Controller。
- 克隆它并将该对象传递给模态。
- OnModal 关闭将模态对象传回 UI。
- 将模态对象的值复制到之前选择的对象中
像这样
for(var i in modalObj){
selectedObj[i]=modalObj[i];
}