首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用单元模板时保存角度UI-网格中的更改?

如何在使用单元模板时保存角度UI-网格中的更改?
EN

Stack Overflow用户
提问于 2015-08-31 18:33:04
回答 2查看 8.9K关注 0票数 2

当试图在Ui-网格单元格template.When中保存更改时,我在Ui教程中发现,当有一个映射到列:可编辑的字段时,我发现如何保存更改时,我很难理解从哪里开始。

我创建了一个简单的网格作为示例,在一个列中有多个输入文本字段。如何编辑和保存对此网格的更改?使用Kendo +剃刀+ c#,我能够将更改保存在列中,其中包含8-9个变量。我很难理解如何用有角度的ui网格来完成这个任务。

总之,我希望一旦完成网格中的数据编辑,就可以单击网格外部的一个保存按钮。

下面是我的简单网格示例的链接:http://plnkr.co/edit/IeYWL62Oa182crRUEtX4?p=info

代码语言:javascript
复制
var app = angular.module('app', ['ngTouch', 'ui.grid']);

app.controller('MainCtrl', ['$scope', '$http',
  function($scope, $http) {
    $scope.gridOptions = {
      rowHeight: 40,
      enableHorizontalScrollbar: 0,
      enableVerticalScrollbar: 0,
    };

    $scope.gridOptions.columnDefs = 
    [{ name: 'id', width: 35},
     { name: 'template',
       cellTemplate: '<div><input type="text" class="form-control" ng-input="row.entity.name" ng-model="row.entity.name" /></div>' + 
                     '<div><input type="text" class="form-control" ng-input="row.entity.age" ng-model="row.entity.age" /></div>' },
    ];

    $http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
      .success(function(data) {
        $scope.gridOptions.data = data;
      });
  }
])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-31 19:10:03

这是一个非常天真的方式,没有任何检查。它只是为了说明是一种解决问题的方法。

下面的代码将跟踪表中已更改的对象。请记住,没有检查已经做过,您仍然需要过滤双倍,删除对象的更改可能已经取消等等。

代码语言:javascript
复制
$scope.arrayOfChangedObjects = [];

$scope.objectHasChanged = function(object) {
    $scope.arrayOfChangedObjects.push(object);
}; 

然后是要保存的函数。

代码语言:javascript
复制
$scope.save = function() {
  for(var i = 0; i < $scope.arrayOfChangedObjects.length; i++) {
      //do the saving
  }
};

调整模板以调用这些方法。注意grid.appScope.method()

代码语言:javascript
复制
$scope.gridOptions.columnDefs = 
[{ name: 'id', width: 35},
 { name: 'template',
   cellTemplate: '<div><input type="text" ng-change="grid.appScope.objectHasChanged(row.entity)" class="form-control" ng-input="row.entity.name" ng-model="row.entity.name" /></div>' + 
                 '<div><input type="text" ng-change="grid.appScope.objectHasChanged(row.entity)" class="form-control" ng-input="row.entity.age" ng-model="row.entity.age" /></div>' },
];

当然,让用户界面网格知道你在使用编辑模块

代码语言:javascript
复制
var app = angular.module('app', ['ngTouch', 'ui.grid','ui.grid.edit']);

<div ng-controller="MainCtrl">
  <button ng-click="save()">save</button>
  <div ui-grid="gridOptions" class="grid" ui-grid-edit></div>
</div>

工作柱塞可以找到这里

票数 9
EN

Stack Overflow用户

发布于 2015-08-31 18:47:48

如果您想使用他们的编辑功能,您必须将其注入您的模块:

代码语言:javascript
复制
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.edit']);

然后在您的html中,您需要:

代码语言:javascript
复制
<div ui-grid="gridOptions" class="grid" ui-grid-edit></div>

请参阅柱塞

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32317674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档