用ajax从后台取值不是什么有技术含量的活计,把后台取来的值绑定到Vue对象上也不算难,但每一次向后台拿数据的时候都得写上这么一段代码就十分痛苦了。

于是我写了这么一小段js代码,能够自己根据url去后台拿数据,拿来之后自动创建Vue对象并绑定到页面上,整个过程一步到位,岂不美哉!

/**
* 这是一个数据绑定插件,binding()方法接受两个参数,并通过ajax取值然后直接绑定到html元素上<br>
* @author lille 创建于 2019-3-29
*/
var obj = this;
/**
*
* @param elname html元素,通常是一个字符串格式的css选择器,比如:"#t_table"
* @param ajaxpa <br>
* 包含ajax所需的url、data、type,比如:<br>
* <pre>
* {
* url:"getpeoplelist",
* data:{},
* type:"get"
* }
* </pre>
* @returns
*/
function binding(elname, ajaxpa) {
if (typeof (obj[elname]) == "undefined") {
obj[elname] = new Vue({
el : elname,
data : {
data : {}
}
})
obj.callback = function() {
return function(result) {
for ( var key in result) {
Vue.set(obj[elname].data, key, result[key]);
}
}
}
}
$.ajax({
url : ajaxpa.url,
data : ajaxpa.data,
type : ajaxpa.type,
dataType : "json",
success : obj.callback()
})
}

binding.js

在html页面这样调用:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table id="t_table2">
<tr>
<td>{{data.name}}</td>
</tr>
</table>
<script type="text/javascript" src="static/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="static/vue.min.js"></script>
<script type="text/javascript" src="static/binding.js"></script>
<script type="text/javascript">
binding("#t_table2", {
url : "people",
data : {},
type : "get"
})
</script>
</body>
</html>

NewFile.html

后台代码部分更是简单:

package red.lille.entity;

public class People {
private String name = "张三"; public People() {
} public People(String name) {
// TODO Auto-generated constructor stub
if (name != null) {
this.name=name;
}
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

People.java

package red.lille.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import red.lille.entity.People; @Controller
public class AjaxController { @ResponseBody
@RequestMapping("/people")
public People getPeople(@RequestParam(value="name",required=false)String name) {
return new People(name);
}
}

AjaxController.java

最终实现的效果:

话说回来,只看html页面的话还真挺像jsp的EL表达式的

js从后台取值并绑定到元素上的更多相关文章

  1. Webform动态创建删除行及后台取值

    开发过程中经常碰到许多不确定事项,所以有时需要动态生成新的记录,如图所示,点击新增时新增一条参考记录,点击删除时则删除该记录:第一步,创建一个表格,用hidden记录当前最大行数,添加时则只需复制模板 ...

  2. 前台改变asp button控件的值,后台取值没有改变的问题

    前台: <asp:Button ID="btnEdit" Style="margin-left: 600px;" runat="server&q ...

  3. chrome 和IE 上传的文件,在net 后台取值Request.Form.Files[0].FileName 的不同

    chrome 和IE 上传的文件,在net 后台取值Request.Form.Files[0].FileName 的不同 chrome 获得的是不含路径的纯文件名 IE获得的是含路径的文件名

  4. js对div取值与赋值

    js对div取值与赋值 因为JavaScript运行时,id="test1" 的那个div元素可能还没解析和加载,js加载是有顺序的.只需把 js 整个搬到 后面即可. 还有一个特 ...

  5. CYQ.Data 快速开发之UI(赋值、取值、绑定)原理

    昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...

  6. omDialog设计造成控件无法后台取值

    http://ui.operamasks.org/website/homepage.html 使用服务端控件,前台进行赋值,但后台确无法取值. 不仅如此,如果里面放置了一个ASp:Button同样无法 ...

  7. .net TxetBox控件设置ReadOnly=True后台取值问题

    1.为TxetBox添加onfocus=this.blur()进行模拟 2.通过 Request.From["TextBox"].Trim()取值; 3.后台CS文件设置TextB ...

  8. asp.net textbox控件readonly为true时,后台取值的问题

    如题,在后台通过textbox.Text方式取值为空,不论你默认值是否是空,如想要获得,需通过request.Form[""]的方式.

  9. ASP.NET页面使用JQuery EasyUI生成Dialog后台取值为空

    原因: JQuery EasyUI生成Dialog后原来的文档结构发生了变化,原本在form里的内容被移动form外面,提交到后台后就没有办法取值了. 解决办法: 在生成Dialog后将它append ...

随机推荐

  1. HUST软件测试数媒1501班: 第0周作业成绩

    说明 本次公布的成绩包含三次作业的结果: 毕博平台课前测试题 第0周作业1:开设博客 第0周作业2:博客阅读和思考 如果同学对作业结果存在异议,可以: 在线平台的第一周在线答疑中创建话题申诉. 或直接 ...

  2. es学习-映射管理

    2.2.1 增加映射 url:http://192.168.0.108:9200/yingshe/_mapping/user/(前提 索引存在,如索引不存在 请按照上一篇创建索引添加映射) 参数: { ...

  3. smarty中用truncate来截取中英文字符串及避免中文乱码问题

    smarty中用truncate来截取含有中英文的字符串,可能会出现中文乱码问题.字符串截取长度不一问题,下面是新建个扩展函数,或修改原Truncate函数方法也可以的.扩展smarty/plugin ...

  4. g++中宏NULL究竟是什么?

    NULL是个指针,还是个整数?0?或(void*)0?答案是和g++版本有关.g++ 4.6支持C++11,引入了nullptr,也许会发生变化. 可以写段简单代码求证一下: #include < ...

  5. 2.5 《硬啃设计模式》第7章 车手选车 - 生成器(Builder Pattern)

    某赛车游戏,玩家可以选择不同的车,这些车其实是采用不同性能的配件组成的,如:车胎.发动机等. 玩家选择一部车,其实就是new了一部车. 你如何考虑“new car”的代码? 要new这个车,可能需要先 ...

  6. 系统蓝屏stop:ox000007B错误解决方案

    解决方法:开机进入bios:BIOS->Advanced->SATA Mode:[AHCI改为ATA或Compatibility],然后F10保存退出. ATA是指硬盘使用IDE兼容模式, ...

  7. jquery库与其他库冲突的问题解决-jquery.noConflict()

    在使用jQuery开发的时候,可能还会使用到其他的JS库,比如Prototype,但多库共存时可能会发生冲突:若是发生冲突后,可以通过以下几种方案进行解决: 一. jQuery库在其他库之前导入,直接 ...

  8. Thrift框架学习

    参考文章:1.http://www.kankanews.com/ICkengine/archives/54084.shtml 2.http://www.cnblogs.com/liping135991 ...

  9. Redis 七月小说网的爬虫缓存设计

    一.爬虫策略 1.主服务器先根据spider.all set排重,再 lpush request_url 到spider.wait List中,并且 sadd request_url 到 set中: ...

  10. C# 汉语生成拼音(微软官方方案)

    项目开发中用户的登录名是管理员在后台输入汉字姓名后自动生成的拼音.例如输入:张三,则登录名自动生成ZHANGSAN. 我在网上查阅了很多方法: 如:http://blog.csdn.net/nengz ...