【AmazeUI】AmazeUI的确定框与确定框的致命缺陷

在AmazeUI这个手机前端框架可以通过以下的脚本:

function calculate(){
    $('#confirm1').modal({
    });
}

来触发在HTML已经如下布局的确定框:

<div class="am-modal am-modal-alert" tabindex="-1" id="confirm1">
    <div class="am-modal-dialog">
        <div class="am-modal-bd">确定框内容</div>
        <div class="am-modal-footer">
            <span class="am-modal-btn" data-am-modal-confirm>确定</span>
            <span class="am-modal-btn" data-am-modal-cancel>取消</span>
        </div>
    </div>
</div>

这种确定框已经在《【AmazeUI】在模态框中嵌入表单,形成模态输入框》(点击打开链接)详细介绍过了。下面以一个例子,重点说说这个确定框的致命缺陷。

如下的一个HTML布局:

<!--使用HTML5开发-->
<!doctype html>
<html class="no-js">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!--自动适应移动屏幕-->
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <!--优先使用webkit内核渲染-->
        <meta name="renderer" content="webkit">
        <!--不要被百度转码-->
        <meta http-equiv="Cache-Control" content="no-siteapp"/>
        <!--以下才是引入amazeui资源-->
        <link rel="stylesheet" href="assets/css/amazeui.min.css">
        <link rel="stylesheet" href="assets/css/app.css">
        <!--引入js的时候要注意,必须先引入jQuery,再引入amazeui,因为这个框架是基于jQuery开发的-->
        <script src="assets/js/jquery.min.js"></script>
        <script src="assets/js/amazeui.min.js"></script>
        <title>AmazeUI模态框</title>
    </head>
	<body>
    	<input type="text" id="num1" />+<input type="text" id="num2" /><button onClick="calculate()">=</button><span id="result"></span>
		<!--警告框-->
        <div class="am-modal am-modal-alert" tabindex="-1" id="confirm1">
            <div class="am-modal-dialog">
                <div class="am-modal-bd">确定计算吗?</div>
                <div class="am-modal-footer">
                    <span class="am-modal-btn" data-am-modal-confirm>确定</span>
                    <span class="am-modal-btn" data-am-modal-cancel>取消</span>
                </div>
            </div>
        </div>
	</body>
</html>

如下的一个脚本:

<script>
	function calculate(){
		var num1=$("#num1").val();
		var num2=$("#num2").val();
		if(isNaN(num1)||isNaN(num2)||!num1||!num2)
			alert("任意一个不是数!");
		else{
			var result=parseFloat(num1)+parseFloat(num2);
		}
		$('#confirm1').modal({
			onConfirm: function(){
				alert("num1的值为:"+num1);
				alert("num2的值为:"+num2);
				$("#result").html(result);
			}
		});
	}
</script>

本来是希望达到如下的效果,做一个加法器,在做加法之后,给出用户的一个提示,询问是否计算?

但实际运行结果大家看到了,第一次运行的时候,脚本获取到值是正确,但是第二次运行的时候还是第一次运行的值。

根据AmazeUI官网的资料说明,是因为基于性能的考虑,这样的模态框只保存第一次运行的值。这样是非常致命的!正如上面的一些场合,在用户增删改查之前,希望通过先确定的方法,来问用户是否执行操作,但是,由于AmazeUI这样的所谓的性能考虑,导致无法达到多次更新函数数值的效果。

虽然官网中提出了设置通过relatedTarget这个钩子获取数据,该元素为桥梁获取想要的数据等一系列的方式(点击打开链接

但是实质操作很不理想,至少设置了relatedTarget之后,还无法与Ajax正确交互。

我也曾想过,写成这样行不行能呢:

<script>
	function calculate(){
		$('#confirm1').modal({
			onCancel: function() {
				return false;
			}
		});
		//写你要执行的东西……
	}
</script>

然而,这并没有什么卵用……还没有等用户点击确定,则执行下面的内容了。不会像alert();打断脚本。

这个对话框,还不如JavaScript原生态,兼容任何浏览器的对话框,这个对话框在UC、手机自带的浏览器有效,视觉效果还不错。

if(confirm("提示框内容")){
	//用户点确定之后的内容
}
else{
	//用户点取消之后的内容
}

都不知道AmazeUI怎么搞的?什么基于性能考虑?明明连功能都没有实现好,就性能考虑,我只能呵呵了害得我还以为是后台那些神级什么缓存机制与Ajax出了问题。居然还有剔除作用域的做法,根本就不符合编程思想。

时间: 2024-07-31 21:06:16

【AmazeUI】AmazeUI的确定框与确定框的致命缺陷的相关文章

学习15 单选框/多选框标签

<!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>单选框/复选框</title> </head> <body> <form action="save.php" method="p

Bootstrap 表单和图片 (内联表单,表单合组,水平排列,复选框和单选框,下拉列表,校验状态,添加额外的图标,控制尺寸,图片)

一.表单 基本格式 注:只有正确设置了输入框的 type 类型,才能被赋予正确的样式. 支持的输入框控件 包括:text.password.datetime.datetime-local.date.month.time.week. number.email.url.search.tel 和 color. <form> <div class="form-group"> <label>电子邮件</label> <input type=&

判断文本框、组合框为空太麻烦?

做机房重构这么长时间了,由纯三层转到加模式加各种其他技术.写了各个层的代码,每次写到要判断文本框或组合框为空的时候总要重复一个一个的判断,虽简单但写的太多了就感觉不怎么爽.不将就是创造的原动力,整点儿技术含量的方法. 今天就解决了这个问题:判断是否为空就两种情况:1.全部为空2.部分为空 1.全部为空 Public Function IsAllEmpty(ByVal frm As Form) As Boolean Dim control As New Control For Each ct1 A

CSS框模型(框模型概述、内边距、边框、外边距、外边距合并)

CSS 框模型概述 CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式. 元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素. 内边距.边框和外边距都是可选的,默认值是零.但是,许多元素将由用户代理样式表设置外边距和内边距.可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式.这可以分别进行,也可以使用通用选择

【mfc】组框、单选框控件与复选框控件

VC6中的MFC中的单选框与复选框控件也不简单,它没有VS中C#那样可以之间通过一个封装之后的函数进行判断,该单选框/复选框有没有被选中啊?或者控制单选框/复选框的选中状态.这东西比较复杂,通过相应的值来控制的. 一.基本目标 下面就用一个简单例子来说明VC6中的MFC中的单选框与复选框控件,点击"确定"按钮能够判断对话框中的所有单选框与复选框的选中状态.Radio1-Radio3互成一个组,组内仅能够有一个组员被选中,Radio4-Radio5也互成一组,选择Radio4能够令复选框

Jquery学习笔记:操作form表单元素之二(复选框和单选框)

在上面文章的基础上,我们介绍如何操作表单元素中的 复选框和单选框. 一.复选框 <label> <input type="checkbox" id="item" checked> 全选</label> 注意,input标签要放在label标签内,这样点击文字时也会有反映. 如果选中了,调用  $("#item").prop("checked")返回true,否则返回false 同样利用pro

下拉框与文本框重叠,即可以录入又可以选择的效果。

<div style="position:relative;"> <span style="margin-left: 100px; width: 18px; overflow: hidden;"> <select id="brand" name="brandId" style="width:150px; margin-left:-100px;height:21px;">

ops-web运维平台-create.jsp-mootools下拉框-复选框

create.jsp页面的,body部分 <body onload="Page.init('${pageError}','${pageMessage}',${isSubmit},true)"> <div id="title">${pageTitle}</div> <s:form id="MYFORM" action="%{pageAction}" method="post&q

CSS框模型:一切皆为框 — 从行框说起

一 行框 看图说话 css 行框 各部分详解 上图代表了框模型中的行框.line-height 属性设置行间的距离(行高).该属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离. line-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为两半,分别加到一个文本行内容的顶部和底部.可以包含这些内容的最小框就是行框.[来源] 二 框模型 继续看图 上图代表了CSS中的框,每个框(也就是所有元素都是框,一定要记住这点,下

Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...

PS:渐渐明白,在实验室呆三年都不如在企业呆一年... 学习内容: 1.使用AbActivity内部封装的方法实现进度框,Toast框,弹出框,确认框...   AndBase中AbActivity封装好了许多方法提供我们去使用,使得在使用的时候更加的方便,只需要传递相关参数即可..省去了我们自己使用基础的函数进行构造...   就好比进度框,Toast框,弹出框,确认框...这些基本的东西都在AndBase的AbActivity封装好了...我们只需要传递参数调用其中内部的方法就可以完成这些视