KnockoutJs (三)为Json数据添加监控属性(方法)

原创 2016年08月21日 11:02:27
 var cartList = (@Html.Raw(@ViewData["json"])); //接收后台json数据
            for(var item in cartList)
            {
                var p=cartList[item].Price;
                var c=cartList[item].Count;
                cartList[item].Price=ko.observable(p); //添加监控
                cartList[item].Count=ko.observable(c); //添加监控
                cartList[item].ComputePrice=ko.computed(function(index){  //为json添加计算价格方法
                    return {
                        read:function(){
                            var self = cartList[index];
                            return formatPrice(self.Price()* self.Count());
                        },owner:this
                    }
                }(item));
                cartList[item].subtract=ko.computed(function(index){ //因为要遍历整个Json数据,每个item方法需要采用闭包形式封装
                    return {
                        read:function(){
                            var self=cartList[index];
                            return self.Count();
                        },
                        write:function(){
                            var self=cartList[index];
                            if (self.Count()>1)
                            {
                                self.Count(self.Count()-1);
                            }
                        },owner:this
                    }
                }(item));
                cartList[item].add=ko.computed(function(index){
                    return {
                        read:function(){
                            var self=cartList[index];
                            return self.Count();
                        },
                        write:function(){
                            var self=cartList[index];
                            if (self.Count()<999)
                            {
                                self.Count(self.Count()+1);
                            }
                        },owner:this
                    }
                }(item));
            } 



相关文章推荐

Knockout 绑定列表

上一个章节我们说到Knockout能够很方便地做数据绑定,也提供了一些实例。在通常的开发过程中,最常见的数据操作就是列表。今天写了一个例子来说明Knockout是如何做列表的数据绑定的。 1.控制器...

knockout绑定复杂的JSON数据 使用 Mapping插件

1.  插件的引入 下载地址 https://github.com/SteveSanderson/knockout.mapping/tree/master/build/output 2   通过ma...

KnockoutJS (一)Json动态增删

var cmyk=[ { colorName:"cyan", value:"100,0,0,0" ...
  • Seal203
  • Seal203
  • 2016年08月20日 20:01
  • 467

knockout Observable Array(监控数组)

Observable Array(监控数组)的作用 列表操作是经常会遇到的一个场景,使用监控数组,你可以: 保存列表对象,并且使用Ko提供的丰富的API操作列表元素(支持内建js Array的...
  • eqera
  • eqera
  • 2012年12月26日 09:15
  • 11929

knockoutjs从多个数据源获取到的数据合并到一个javascript的viewmodel中使用

使用场景是这样的。在页面某部分自试题库中随机读取了数十道题。试题的序号是在页面中自动生成的。当点击某个试题序号的时候,我需要自试题库中读取这个试题标题,选项,答案等信息,也需要这个标题的序号传到kno...
  • sxf359
  • sxf359
  • 2017年01月03日 17:04
  • 423

Knockout监控属性

关于Knockout的3个重要概念(Observables,DependentObservables,ObservableArray),本人无法准确表达它的准确含义,所以暂定翻译为(监控属性、依赖监控...
  • eqera
  • eqera
  • 2012年12月26日 09:00
  • 3236

knockout js动态绑定viewModel的对象属性

最近因为公司的需要用到了knockout js.而每次写页面的js的时候都要手动写一个viewModel 感觉很繁琐..就动手写了一个递归来进行viewModel的绑定(后面才发现原来ko已经有写好的...
  • Wx_H_
  • Wx_H_
  • 2016年03月23日 14:12
  • 2503

Knockout初体验--监控属性

Knockout是一款很优秀的JavaScript库(简称KO),它可以帮助你仅使用一个清晰整洁的底层数据模型(data model)即可创建一个富文本且具有良好的显示和编辑功能的用户界面。任何时候你...

Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)

Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML) 一、XMLHttpRequest对象   ...

自定义标签属性数据通过json对象解析得到所需数据方法

json数据解析方法JSON.parse()以及自定义标签属性数据的定义以及获取
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:KnockoutJs (三)为Json数据添加监控属性(方法)
举报原因:
原因补充:

(最多只允许输入30个字)