学习知识分享-个人学习生活分享 - 服务控制
type: channel
link: https://www.pvcreate.com/index.php/tag/服务控制/
items: 关于服务启动按钮页面的优化

关于服务启动按钮页面的优化
type: item
date: 2017-06-18T21:24:00+08:00
description: 关于服务启动按钮页面的优化 原则 同一个服务器只允许启动一个按钮,也就是只能触发一个启动/关闭/重启的功能。不同的服务器是可以同时异步触发的。 启动或关闭是异步进行的。 启动或关闭的时候，同一个服务器的上按钮变灰色，并且不能点击。 问题 由于妹子ui的模态框在数据传输存在bug,详情撮: https://amazeui.org/javascript/modal 所以在多个异步并发执行的时候出现各种Bug. $(function() { $('#doc-modal-list').find('.am-icon-close').add('#doc-confirm-toggle'). on('click', function() { $('#my-confirm').modal({ relatedTarget: this, onConfirm: function(options) { var $link = $(this.relatedTarget).prev('a'); var msg = $link.length ? '你要删除的链接 ID 为 ' + $link.data('id') : '确定了，但不知道要整哪样'; alert(msg); }, // closeOnConfirm: false, onCancel: function() { alert('算求，不弄了'); } }); }); }); 通过 relatedTarget 这个钩子获取数据，如上面的演示，以该元素为桥梁获取想要的数据（2.1 开始支持）； 最初代码的引用 $('#my-confirm').modal({ relatedTarget: this, onConfirm: function(options) { if (start_store != undefined) { $("#msgtips").html('[服务器名称:' + start_store.alias + '] 正在启动,请等待启动完成或使用批量启动.'); $('#my-alert').modal('open'); return; }else{ store.set('start_store', { code: '1', alias: dename }) }; my_this = this.relatedTarget; $.ajax({ type: "POST", async:true, url: "/api/service", cache: false, data: data, dataType: "json", success: function(res){ var alias = res.data.data[0].alias; var code = res.data.data[0].code; var reskey = res.data.data[0].key; var msg = res.data.data[0].msg; var resnetwork_ip = res.data.data[0].network_ip; console.log(res); if ( code == 1 ) { $("#msgtips").html('[服务器名称:'+alias+'启动成功!'); $('#my-alert').modal('open'); closeloading(my_this); }else{ $("#msgtips").html('[服务器名称:'+alias+']启动失败,'+msg+'!'); $('#my-alert').modal('open'); closeloading(my_this); } store.remove('start_store'); closeloading(my_this); }, error:function(){ $("#msgtips").html('[服务器名称:'+$(my_this).attr("dename")+'] 请求失败,请联系管理员!'); $('#my-alert').modal('open'); closeloading(my_this); store.remove('start_store'); } }); }, onCancel: function() { my_this = this.relatedTarget; closeloading(my_this); // var store = $.AMUI.store; store.remove('start_store'); } }); 改进后代码的引用 $('#my-confirm').modal({ relatedTarget: this, onConfi…