【发布时间】:2015-09-29 13:43:42
【问题描述】:
我有一个 AngularJS 应用程序,我在其中使用 Xeditable 来动态修改表值。 我正在使用一种标准的方法来编辑值,而不显示任何按钮,并使用 blur 属性来快速在线提交我的所有更改。
<a href="#" buttons="no" blur="submit">{{ myValue }}</a>
与其将确认视为无数示例中的按钮,不如将它们仅在保存时显示在对话框中(onblur)。
由于用户交互问题,我想在更改字段然后单击离开(或当字段退出其编辑状态时)显示确认对话框。基本上是“onbeforesave=" 属性中的内容。
此时应弹出确认信息,通知用户该值已更改并询问他们是否要保存它。
我知道如何在 onbeforesave 事件上调用函数,但由于它位于控制器内,我不知道如何调用确认对话框。
基本步骤如下:
- 用户点击表格单元格值
- 单元格变为可编辑。
- 用户更改单元格值。
- 用户点击离开单元格。
- 弹出小确认对话框(任何用户友好或助推方式)
- 用户确认或取消所做的编辑。
- 冲洗/重复。
感谢任何帮助。
查看当前fiddle
更新: 我最近的尝试使我实现了 angular-dailog-service,它解决了我上面最初的问题,但我仍然无法解决我的最后一部分原始问题。
点击一个单元格,更改一个值并点击离开时,我会收到一个对话框窗口(确认),当我点击 YES 时将调用我的 api 并保存值 - 这很有效。但是,单击 NO 后,我的值在表中仍然发生变化。这个值现在需要恢复到以前的值。有什么帮助吗?
- 我现在使用 onshow 属性来将正在编辑的单元格的当前值保存到范围内。
- 我使用 onbeforesave 属性来启动我的对话框并执行是/否检查。
HTML:
<a href="#" editable-text="myValue" buttons="no" blur="submit" onbeforesave="launchDialog($data)" onshow="onShow($data)" >{{ myValue || 'empty' }}</a>
控制器:
$scope.oldValue = "";
$scope.onShow = function(data){
$scope.oldValue = data;
};
$scope.launchDialog = function(data) {
var dlg = null;
dlg = dialogs.confirm('Value Changed','Do you want to save this change?');
dlg.result.then(function(btn){
//TODO: HIT API AND SAVE VALUE
},function(btn){
//RESET TO OLD VALUE
return "";
});
};
如果弄清楚我的 NO 点击函数(RESET TO OLD VALUE 所在的位置)需要发生什么,那么最后一块拼图。
【问题讨论】:
-
已经看过这个并且玩过它。考虑使用易于单击按钮的指令,但它不满足我的要求。我不确定如何让它按照我上面解释的方式运行。一个实际的解释/想法或一个简短的小提琴将更受欢迎。不过感谢您的努力:")
-
我目前正在考虑尝试使用 m-e-conroy 的 angular-dialog-service(在 github 上)。将尝试使用它来获得我需要的功能,并将根据我的发现进行更新。如果有人想到任何更简单的方法,请同时告诉我:)
标签: angularjs x-editable