<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0, viewport-fit=cover" />
<meta name="format-detection" content="telephone=no" />
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta HTTP-EQUIV="Expires" CONTENT="0">
<script src="https://cdn.bootcss.com/bignumber.js/9.0.0/bignumber.js"></script>
<title></title>
<script>
(function (hasTitle, psdWidth) {
psdWidth = psdWidth || 640;
var zoomStyle = document.getElementById('zoom-style');
var landscape = '';
/*横屏*/
var portrait = '';
/*竖屏*/
if (!zoomStyle) {
zoomStyle = document.createElement('style');
zoomStyle.id = 'zoom-style';
zoomStyle.type = 'text/css';
document.documentElement.appendChild(zoomStyle);
}
var timer = null;
_resize();
window.addEventListener('orientationchange', resize, false);
function resize() {
clearTimeout(timer);
timer = setTimeout(_resize, 300);
}
function _resize() {
var screen_width = document.documentElement.clientWidth;
if (!screen_width) {
/*qq中有几率为0*/
setTimeout(_resize, 50);
return;
}
var screen_height = window.innerHeight;
if (window.innerWidth !== screen_width) {
screen_height *= screen_width / window.innerWidth;
}
var fontSize = screen_width / (psdWidth / 2) * 50;
if (screen_width > screen_height) {
landscape = '@media all and (orientation : landscape){html{font-size:' + fontSize + 'px !important;}}';
} else {
var scaleSize = Math.min(1, screen_height / screen_width * (hasTitle ? 750 / 1207 : 750 / 1334));
portrait = 'html{font-size:' + fontSize + 'px !important;}' + (scaleSize < 1 ?
'.auto_scale{-webkit-transform: scale(' + scaleSize + ');transform: scale(' + scaleSize +
');}.auto_scale_center{-webkit-transform:translate(-50%,-50%) scale(' + scaleSize +
');transform:translate(-50%,-50%) scale(' + scaleSize + ');}' :
'.auto_scale_center{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);}');
}
zoomStyle.innerHTML = portrait + landscape;
if (landscape && portrait) {
window.removeEventListener('orientationchange', resize);
}
}
})(true, 750);
</script>
</head>
<body>
<div id="vue-demo"></div>
<input type="text" id="input">
<script>
var obj = {};
var Demo = document.getElementById('vue-demo')
var Inp = document.getElementById("input")
Object.defineProperty(obj, 'name', {
get: function() {
return val;
},
set: function (newVal) { //当该属性被赋值的时候触发
Inp.value = newVal;
Demo.innerHTML = newVal;
}
})
input.addEventListener('input', function(e) {
console.log(e);
// 给obj的name属性赋值,进而触发该属性的set方法
obj.name = e.target.value;
});
obj.name = 'yzg';//在给obj设置name属性的时候,触发了set这个方法
</script>
</body>
</html>
实现简单的双向数据绑定
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- vue.js是通过它实现双向绑定的。俗称属性拦截器或者前端数据劫持。 首先看一下官方的定义: 一、Object.d...
- Object.defineOroperty(obj,key,describeObj) 要搞明白数据的双向绑定,必须...
- 1. input 的 v-model 语法糖 首先我们需要了解v-model的原理 2.v-model绑定自定义组...