-
Notifications
You must be signed in to change notification settings - Fork 1
angular xeditable
遇见王斌 edited this page Jun 23, 2020
·
5 revisions
https://github.com/vitalets/angular-xeditable
Angular-xeditable 是 AngularJS 指令绑定,允许创建(可编辑元素) editable elements,这种技术被称之为 click-to-edit 或 edit-in-place。
angular-xeditable 是基于 x-editable 开发的,但是是使用 AngularJS,支持复杂的表单和可编辑的网格。
<span editable-text="key" e-readonly="true" e-name="key" e-form="rowform">
__ key __
</span>
属性解释
【类型】editable-text // 数据类型,后面的 "key" 为 `__key__`,即编辑模式的时候的显示值
【属性】e-readonly="true" // 表示此字段只读,有些时候有些字段不需要人为编辑时,很有用
【属性】e-name="key" // 表示编辑模式时字段的名称,生成数据时为 `{'key': xxx}`
【属性】e-form="rowform" // 用于和按钮关联,进行联动
使用 x-editable 后,新增和更新在后端是同一个接口,因为新增行后的保存按钮和对原来的配置保存的按钮的功能是一样的
在前端保存函数中区分下是否是刚新增的配置, 如果是新增的配置,则触发后端新增接口,否则触发更新接口
var app = angular.module('app')
app.controller('WuxingGroupDetailCtrl', ['$scope', 'Request', '$stateParams',
function ($scope, Request, $stateParams) {
//$scope.groupData = {}
$scope.get_list = function () {
Request.get('/wuxing/group_get?appid=' + $stateParams.appid,
function (res) {
$scope.groupData = res.data;
}, false, true);
}
// delete
$scope.delete = function(key){
var data = {};
data["appid"] = $stateParams.appid
data["key"] = key
Request.post('/wuxing/group_delete', data ,
function (res) {
if (res.stat == "OK"){
delete $scope.groupData[res.data.key]
}
});
}
// update
$scope.save = function(data) {
// appid 从 URL 中进行获取
data["appid"] = $stateParams.appid
if ($scope.groupData.hasOwnProperty(data.key))
{
// update
Request.post('/wuxing/group_update', data ,
function (res) {
$scope.get_list();
});
}
else
{
// create
Request.post('/wuxing/group_create', data ,
function (res) {
$scope.get_list();
});
}
};
// create
$scope.add = function() {
$scope.inserted = {
key: null,
value: null,
};
$scope.groupData['key'] = $scope.inserted;
};
$scope.get_list();
}]);
可以将记录中的一个字段设置为只读字段,比如 id, 此 id 由服务端生成
当点击保存时,如果 id 字段值为默认值,则此记录需要 create,否则进行 update
shown="inserted == job" 起着非常重要的作用
<td style="white-space: nowrap">
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveJob($data)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == job">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-sm btn-info">
保存
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="rowform.$cancel()" class="btn btn-sm btn-default">
取消
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-sm btn-info" ng-click="rowform.$show()">编辑</button>
<button class="btn btn-sm btn-danger" ng-click="removeJob(job.name)">删除</button>
</div>
</td>