1.简单举例
复制代码 代码如下:
<script type="text/javascript">
var myObservableArray = ko.observableArray(); ///初始化一个空的数组
myObservableArray.push("Some Value"); ///向数组中添加一个项
</script>
2.关键点:监控数组跟踪的是数组里的对象,而不是这些对象自身的状态。
简单说,将一对象放在observableArray 里不会使这个对象本身的属性变化可监控的。当然你自己也可以声明这个对象的属性为observable的,但它就成了一个依赖监控对象了。一个observableArray 仅仅监控他拥有的对象,并在这些对象添加或者删除的时候发出通知。
3.预加载一个监控数组observableArray
如果你想让你的监控数组在开始的时候就有一些初始值,那么在声明的时候,你可以在构造器里加入这些初始对象。例如:
复制代码 代码如下:
var anotherObservableArray = ko.observableArray([
{ name: "Bungle", type: "Bear" },
{ name: "George", type: "Hippo" },
{ name: "Zippy", type: "Unknown" }
]);
4.从observableArray里读取信息
一个observableArray其实就是一个observable的监控对象,只不过他的值是一个数组(observableArray还加了很多其他特性,稍后介绍)。所以你可以像获取普通的observable的值一样,只需要调用无参函数就可以获取自身的值了。 例如,你可以像下面这样获取它的值:
复制代码 代码如下:
alert('The length of the array is ' + myObservableArray().length);
alert('The first element is ' + myObservableArray()[0]);
理论上你可以使用任何原生的JavaScript数组函数来操作这些数组,但是KO提供了更好的功能等价函数,他们非常有用是因为:
A:兼容所有浏览器。(例如indexOf不能在IE8和早期版本上使用,但KO自己的indexOf 可以在所有浏览器上使用)
B:在数组操作函数方面(例如push和splice),KO自己的方式可以自动触发依赖跟踪,并且通知所有的订阅者它的变化,然后让UI界面也相应的自动更新。
C:语法更方便,调用KO的push方法,只需要这样写:myObservableArray.push(...)。 比如原生数组的myObservableArray().push(...)好用多了。
5.IndexOf和slice
indexOf 函数返回的是第一个等于你参数数组项的索引。例如:myObservableArray.indexOf('Blah')将返回以0为第一个索引的第一个等于Blah的数组项的索引。如果没有找到相等的,将返回-1。
slice函数是observableArray相对于JavaScript 原生函数slice的等价函数(返回给定的从开始索引到结束索引之间所有的对象集合)。 调用myObservableArray.slice(...)等价于调用JavaScript原生函数(例如:myObservableArray().slice(...))。
6.操作observableArray
observableArray 展现的是数组对象相似的函数并通知订阅者的功能。
pop, push, shift, unshift, reverse, sort, splice
所有这些函数都是和JavaScript数组原生函数等价的,唯一不同的数组改变可以通知订阅者:
复制代码 代码如下:
myObservableArray.push('Some new value');// 在数组末尾添加一个新项
myObservableArray.pop();// 删除数组最后一个项并返回该项
myObservableArray.unshift('Some new value');// 在数组头部添加一个项
myObservableArray.shift();// 删除数组头部第一项并返回该项
myObservableArray.reverse();// 翻转整个数组的顺序
myObservableArray.sort();// 给数组排序
默认情况下,是按照字符排序(如果是字符)或者数字排序(如果是数字)。
你可以排序传入一个排序函数进行排序,该排序函数需要接受2个参数(代表该数组里需要比较的项),如果第一个项小于第二个项,返回-1,大于则返回1,等于返回0。例如:用lastname给person排序,你可以这样写:
复制代码 代码如下:
myObservableArray.sort(
function(left, right) {
return left.lastName == right.lastName ? 0 : (left.lastName < right.lastName ? -1 : 1);
});
myObservableArray.splice() 删除指定开始索引和指定数目的数组对象元素。例如myObservableArray.splice(1, 3) 从索引1开始删除3个元素(第2,3,4个元素)然后将这些元素作为一个数组对象返回。
更多observableArray 函数的信息,请参考等价的JavaScript数组标准函数。
7.remove和removeAll
复制代码 代码如下:
observableArray 添加了一些JavaScript数组默认没有但非常有用的函数:
myObservableArray.remove(someItem);// 删除所有等于someItem的元素并将被删除元素作为一个数组返回
myObservableArray.remove(function (item) { return item.age < 18;}) ;//删除所有age属性小于18的元素并将被删除元素作为一个数组返回
相关推荐:
SEO拓客,让您的业务飞速增长!,密云自适应网站建设
什么是seo快排,seo快排方案 ,ai剪图形
ChatGPT安装包Windows版:让AI助力你的工作与生活,人工智能ai不是梦在线
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
seo涉及什么内容,seo主要包括 ,法医使用ai
整理文章的AI:提升写作效率的智能助手
ChatGPT360:全方位提升你的工作与生活效率,ai72787
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
SEO是如何推动企业增长的关键力量,深圳罗湖网站建设设计
AI缩写文本:助力智能生活的革新力量,ai智能写作生成神器下载
为什么越来越多的人选择在知乎发布文章?这里面的机会你可能还没发现!,潍坊关键词排名提升
自动AI写文章:轻松创作时代的全新利器
AI一键生成文章网页版,让内容创作更简单高效
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
AI代谢文章:从灵感到成果的创作革命
wordpress seo是什么,wordpress建站seo好做吗 ,学习图文ai
为什么选择老域名工具?提升网站SEO与品牌影响力的秘密武器,软文与seo文章区别
SEO优化流程:助力网站快速提升排名的关键策略,1745ai
未来工作方式!AI在线工具让效率倍增,工作变轻松
SEO找出网站流量提升的终极策略,带你走向搜索引擎巅峰!,朝阳模板网站建设价格
SEO排序:如何让你的网页在搜索引擎中脱颖而出,平谷抖音seo推广招聘
Chatget免费网站版无需登录,畅享无限对话体验!,工业 Ai 视觉检测
GoogleGTP-智能时代的革命性突破,人工智能的新纪元,ai可以降论文ai率吗
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
ChatGPT中文版下载免费版:智能对话新时代,尽在,ai光波
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
ChatGPT手机下载后打不开?可能是这些问题导致的,解决方法在这里!,孤城ai动画
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维
SEO注意事项:助力网站流量提升的关键策略,济宁快速seo优化价格
SEO短视:为何眼前的成效不能成为长久的策略?,网站上线seo优化
SEO与SEM:谁才是提升网站流量的王者?,Ai中字体如何变形立体
怎样使用AI写文章:释放创作潜能,提升写作效率
ChatGPT支付时银行卡被拒绝?教你几招轻松解决问题!,国内ai换图
seo需要干什么,seo需要具备什么知识 ,ai梦境档案世岛大宅
SEO外包:提升网站排名与品牌曝光的最佳选择,大创建设网站
SEO运营工作是什么,seo公司运营 ,720516AI
ChatGPT为什么打不开?背后原因与解决方案,慧ai写作
什么是seo方法,何为seo ,ai写作神器源码是什么
ChatPartner无法连接网络?解决方案,让你的聊天体验更顺畅!,如何用ai给自己写作文
seo稿件是什么意思,seo文章写作要求 ,ai写作未来展望和展望
《SEO教材:打造网站流量的核心利器,教你轻松SEO优化技巧》,咖啡网站建设总结文案
WP原创:打造属于你的独特网站,从这里开始!,一个网站推广一个月需要多少钱
ChatGPT国内版:为中国用户量身定制的智能助手,开启AI新纪元,ai文章赚钱
ChatGPT无法加载?检查您的网络设置并尝试重启Chat,ai写作怎么写作文的
企业如何借助SEO咨询实现精准流量引爆,助力业绩提升,立刻推广的旅游线下营销
SEO薪资这些,你也能月入过万!,天水网站建设公司
Chat免费,让沟通无界限,尽享智能对话时代,ai没办法置顶
中国AI软实力崛起:技术创新与产业应用的完美融合,seo0066
实用AI工具:提升效率、优化生活的科技利器