WinJS.Binding.List与kendo.data.ObservableArray
avalon0.8一个最大目标是实现对数组的深层监控,可是面临的困难重重,至今还没有什么起色。于是看一下其他两个MVVM框架的做法(knockout, emberjs, angular都不能监听家庭数组元素的属性改动)
WinJS.Binding.List的详细文档可见这里
我写了一些测试示例,发现它是生成一个新对象来处理,而且不是数组实例,也不是类数组对象,用起点有点别扭。
var object = new WinJS.Binding.List([1, 2, 3, 5, {a: 4}]);
console.log(object)
console.log(object.getItem(0))
console.log(object.getAt(0))
object.addEventListener("iteminserted", function() {
console.log(arguments)
})
object.addEventListener("itemchanged", function() {
console.log(arguments)
})
object.addEventListener("itemmutated", function() {
console.log(arguments)
})
object.push(7, 8, 9)
object.setAt(0, 10)
object.setAt(4, {a: 7})
console.log(object.getItem(4))
object.getItem(4).data.a = "7777777"
object.notifyMutated(4)
kendo ui的监控数组可见这里这里
var array = new kendo.data.ObservableArray([1, 2, 3]);
array.bind("change", function(e) {
console.log(e.action, e.index, e.items);
});
array.push(4, 5); // outputs "add", 3, [4, 5]
array.pop(); // outputs "remove", 4, [5]
var people = new kendo.data.ObservableArray([{ name: "John Doe" }]);
people.bind("change", function(e) {
console.log(e.action, e.field, e.items[0].get("name"));
});
people[0].set("name", "Jane Doe"); // outputs "itemchange", "name", "Jane Doe"
从它们的接口设计来看,它们不像avalon原打算的那样,通过监控数组所在的VM来监控,而是监控数组本来就应该自己管好自己。
avalon.define("xxx", function(vm){
vm.array = [1,2,3,4]
vm.$watch("array.length", callback)
})
//打算从上面的接口换成下面这种
var model = avalon.define("xxx", function(vm){
vm.array = [1,2,3,4]
})
model.$watch("length", callback)
model.$watch("remove", callback)
model.$watch("add", callback)
model.$watch("change", callback)
WinJS.Binding.List与kendo.data.ObservableArray的更多相关文章
- Optimizing Performance: Data Binding(zz)
Optimizing Performance: Data Binding .NET Framework 4.5 Other Versions Windows Presentation Founda ...
- Data Binding in WPF
http://msdn.microsoft.com/en-us/magazine/cc163299.aspx#S1 Data Binding in WPF John Papa Code downl ...
- Data Binding(数据绑定)用户指南
1)介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它 ...
- Android开发利器之Data Binding Compiler V2 —— 搭建Android MVVM完全体的基础
原创声明: 该文章为原创文章,未经博主同意严禁转载. 前言: Android常用的架构有:MVC.MVP.MVVM,而MVVM是唯一一个官方提供支持组件的架构,我们可以通过Android lifecy ...
- Data Binding MVVM 数据绑定 总结
示例代码:https://github.com/baiqiantao/DataBindingTest 参考:精通Android Data Binding Android Data Binding ...
- 精通 Android Data Binding
转自:https://github.com/LyndonChin/MasteringAndroidDataBinding 官方虽然已经给出了教程 - Data Binding Guide (中文版 - ...
- Kendo UI 初始化 Data 属性
初始化 Data 属性 前面在介绍准备 Kendo UI 开发环境时我们使用 jQuery 的方法将一个 HTML 元素转换成一个 Kendo UI 控制项: $(“#datepicker”).ke ...
- Data Binding on Android
Data Binbing框架是在2015年Google I/O大会上最早提出来的,一直在Android开发者中热议,但是很少有真正在项目中用到.本文简单介绍Data Binding框架的简单用法以及其 ...
- Windows 8.1 应用再出发 (WinJS) - 几种新增控件(2)
上篇我们介绍了Windows 8.1 和 WinJS 中新增控件中的 AppBarCommand.BackButton.Hub.ItemContainer,本篇我们接着来介绍 NavBar.Repea ...
随机推荐
- 车牌识别LPR(二)-- 车牌特征及难点
第二篇:车牌的特征及难点 2.1 对我国车牌的认识 我国目前使用的汽车牌号标准是 2007 年开始实施的<中华人民共和国机动车号牌>GA36-2007(2010 年修订).根据 GA36 ...
- static,this,抽象类,接口和包
1. static 1)静态变量:Java虚拟机为静态变量开辟单独的存储空间,所以所有的对象内部的静态变量在内存中都指向同一个地址,那么不管哪个对象改变这个成员变量,所有对象中该成员变量的值都发生变化 ...
- Android Touch事件分发机制
参考:http://blog.csdn.net/xiaanming/article/details/21696315 参考:http://blog.csdn.net/wangjinyu501/arti ...
- Android Studio设置,鼠标放上去有提示
设置如下: 1. 2. 勾选就可以了
- Python错误处理
中文注释出错,把UTF-8标明放在文件头就行了 # coding: utf-8
- struts2 获取前台表单的值?? 原理??
struts2中,在ACTION中申明一个变量 private string 变量名:然后设置变量名 的get/set方法: 在运行的时候struts2会自动获取. 比如:jsp 页面中有个文本框&l ...
- 函数fsp_header_init
/**********************************************************************//** Initializes the space he ...
- UVa 10088 (Pick定理) Trees on My Island
这种1A的感觉真好 #include <cstdio> #include <vector> #include <cmath> using namespace std ...
- UVa 1252 (状压DP + 记忆化搜索) Twenty Questions
题意: 有n个长为m的各不相同的二进制数(允许存在前导0),别人已经事先想好n个数中的一个数W,你要猜出这个数. 每次只可以询问该数的第K为是否为1. 问采用最优询问策略,则最少需要询问多少次能保证猜 ...
- 添加gif效果图
1.贴加第三方包 http://blog.csdn.net/iamlazybone/article/details/5972234 2. <FrameLayout android:id=&quo ...