knockout双重绑定

1.绑定变量

globalData = ko.observable({item:{}});

2.绑定html

ko.applyBindings(globalData, document.getElementById('_bindDemo'));
注:这里document可以不写,则默认绑定全局

3.对数据进行赋值,达到刷新页面的效果

globalData({item:data});
注:因为定义的item为空值,这里定义了一个data为item赋值

4.对–对象–使用foreach循环

<tbody data-bind="foreach: items">
	<tr>
		<td data-bind="text: framework"></td>
		<td data-bind="text: stars"></td>
	</tr>
</tbody>
注:这里的items一般使用Ajax对其赋值,Ajax返回JSON格式数据,当作为List集合返回时,可以绑定到items
success: function(data, textStatus, jqXHR){
			globalData({items:data});
		}

5.绑定普通数组循环到html

	<!--ko foreach:item.arr-->
	<div><span>随机数:</span><span data-bind="text: $data"></span></div>
	<!--/ko-->
使用注解简写循环的方式,$index--表示索引,$data--表示具体数据

6.小demo

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript" src="js/knockout-3.4.0.js" ></script>
	</head>
	<body>
		<input type="button" value="dian" onclick="randomAve(0.3,0.3009)" />
		<div>
			<!--ko foreach:item.arr-->
			<div><span>随机数:</span><span data-bind="text: $data"></span></div>
			<!--/ko-->
			<div><span>总和:</span><span data-bind="text: item.sum"></span></div>
			<div><span>平均值</span><span data-bind="text: item.aveNum"></span></div>	
			<div><span>误差:</span><span data-bind="text: item.errorValue"></span></div>		
		</div>
		<script type="text/javascript">
			globalData = ko.observable({item:{}});
			ko.applyBindings(globalData);
			var data = {};
			
			function randomNum(min, max){
				num = Math.floor((min + Math.random() * ( (max+0.0001) - min)) * 10000) / 10000;
				return num;
			}
			
			function averageValue(arr){
				data.sum = arr[0] + arr[1] + arr[2];
				data.aveNum = Math.floor((data.sum / data.arr.length ) * 10000) / 10000;
				return  data.aveNum;
			}
			
			function randomAve(min, max){
				data.arr = [];
				for (var i = 0; i < 3 ; i++) {
					data.arr[i] = randomNum(min, max);
				}
				data.aveNum = averageValue(data.arr);
				errorValue(min);
			}
			
			function errorValue(num){
				data.errorValue = (num - data.aveNum) / (data.aveNum * 100);
				console.log(data);
				globalData({item:data});
			}
			
		</script>
	</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值