使用knockout.js 完毕template binding
//1.template <script id="txn-details-template" type="text/html">
<!--Status 0 : Success , Status 1 : Processing , Status 2 : Rejected-->
<div class="pull-left last-ten-records">
@string.Format(Resx.RecentRecordsShowHere_0,5)
</div>
<div class="row">
<table class="table table-bordered tbl">
<thead>
<tr>
<th>
@Resx.WithdrawalHistory_RequestDate
</th>
<th>
@Resx.WithdrawalHistory_TransactionNo
</th>
<th>
@Resx.WithdrawalHistory_Method
</th>
<th>
@Resx.WithdrawalHistory_Status
</th>
<th>
@Resx.WithdrawalHistory_Amount
</th>
</tr>
</thead>
<tbody data-bind="foreach: Values">
<tr>
<td data-bind="text: Date"></td>
<td data-bind="text: TransactionNo"></td>
<td data-bind="text: Method"></td>
<!-- ko if: StatusCode == 0 -->
<td style="color:#efc944" data-bind="text: Status"></td>
<!-- /ko -->
<!-- ko if: StatusCode == 1 -->
<td style="color:#efc944" data-bind="text: Status"></td>
<!-- /ko -->
<!-- ko if: StatusCode == 2 -->
<td style="color:#80ca0b" data-bind="text: Status"></td>
<!-- /ko -->
<!-- ko if: StatusCode == 3 -->
<td style="color:#ff7d00" data-bind="text: Status"></td>
<!-- /ko -->
<!-- ko if: StatusCode == 4 -->
<td style="color:#ff7d00" data-bind="text: Status"></td>
<!-- /ko -->
<td><span data-bind="text: Amount" style="float: right;margin-right: 27%;"></span></td>
</tr>
</tbody>
<tfoot>
<tr><td colspan="5"></td></tr>
</tfoot>
</table>
</div> </script> //2.div for binding
<div id="txn-details" class="txn-details" data-bind="template: { name: 'txn-details-template' }"> </div>
//3.js
var preFetch = {
pageLoaded: false, data: undefined
};
$(document).ready(function () {
$("#btnAccountDetails").click(function () {
var arrow = $("#arrow");
if ($(arrow).attr("showing")) {
$(arrow).html("<i class=\"fa fa-angle-double-up\"></i>");
$(arrow).removeAttr("showing", 1);
$("#txn-details").slideToggle(false);
prefetchDataToCache();
return;
}
$(arrow).html("<i class=\"fa fa-angle-double-down\"></i>");
$(arrow).attr("showing", 1);
$("#txn-details").slideToggle(true);
});
prefetchDataToCache();
});
function binding() {
var vmVals = ko.observableArray();
for (var i = 0; i < preFetch.data.Values.length; i++) {
vmVals.push(preFetch.data.Values[i]);
}
ko.applyBindings({ Values: vmVals }, document.getElementById("txn-details"));
}
function prefetchDataToCache() {
$.ajax({
type: 'POST',
url: $("#hdnLatestTxnUrl").val(),
success: function (data) {
preFetch.data = data;
ko.cleanNode($("#txn-details")[0]);
binding();
}
});
}
MVC Controller 返回的json结构:
{Values : [{Status : 'xxx' ,StatusCode : 1 , Date: 'xxxx', TransactionNo : 'xxxx' , Method: 'xxx' , Amout : 100} ]}
使用knockout.js 完毕template binding的更多相关文章
- 比較Backbone.js, Angular.js, Ember.js, Knockout.js 心得
還記得第一次寫網站的時候,我無意間寫成了 SPA(single page application),當時還沒有SPA這個詞,後來因為廣告主需要不同 url location 頁面的廣告展示,只好把部分 ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
- 【Knockout.js 学习体验之旅】(3)模板绑定
本文是[Knockout.js 学习体验之旅]系列文章的第3篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...
- 【Knockout.js 学习体验之旅】(2)花式捆绑
本文是[Knockout.js 学习体验之旅]系列文章的第2篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...
- MVVM大比拼之knockout.js源码精析
简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有 ...
- MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录
注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...
- Knockout.js随手记(5)
以列表方式呈现数据 处理以数组形式储存的多条数据,要先认识foreach.在ViewModel定义一个JavaScript Array或是ko.observableArray() (observab ...
- Knockout.js随手记(2)
计算属性 konckout.js的API文档,写的极为详细和生动,透过MVVM的运作原理,开发时只需专注于定义ViewModel逻辑,不需耗费心力处理TextBox.Select的onchange.o ...
- Knockout.js随手记(1)
新的开始,knockout.js 1.首先去http://knockoutjs.com/index.html下载knockout.js,最新的版本是2.3 2.知道什么是Knockout?它是个Jav ...
随机推荐
- 定时器函数SetTimer
原文链接:http://www.cnblogs.com/zhangpengshou/archive/2009/04/05/1429770.html 一.SetTimer表示的是定义个定时器.根据定义指 ...
- Fedora27 安装Adobe Flash Player PPAPI与NPAPI实现Firefox和Chromium视频播放
一.Adobe Flash Player PPAPI与NPAPI有什么区别我们在打开网页视频时有时会弹出没有安装Flash插件的提示,此时就无法观看视频.Adobe Flash Player是浏览器显 ...
- CodeChef November Challenge 2013 部分题解
http://www.codechef.com/NOV13 还在比...我先放一部分题解吧... Uncle Johny 排序一遍 struct node{ int val; int pos; }a[ ...
- WebAssembly学习(五):AssemblyScript - Hello World
一.项目创建 1.创建AssemblyScript根目录 mkdir AssemblyScript 2.安装AssemblyScript开发依赖 cnpm install --save-dev Ass ...
- scrollWidth到底是什么???
贴上MDN对scrollwidth的定义: The Element.scrollWidth read-only property is a measurement of the width of an ...
- Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅
通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来 Docker 化Dockerize一个 ...
- HOJ——T 2275 Number sequence
http://acm.hit.edu.cn/hoj/problem/view?id=2275 Source : SCU Programming Contest 2006 Final Time li ...
- C++ Primer笔记12_运算符重载_递增递减运算符_成员訪问运算符
1.递增递减运算符 C++语言并不要求递增递减运算符必须是类的成员.可是由于他们改变的正好是所操作对象的状态.所以建议设定为成员函数. 对于递增与递减运算符来说,有前置与后置两个版本号,因此.我们应该 ...
- androidclient和站点数据交互的实现(基于Http协议获取数据方法)
androidclient一般不直接訪问站点数据库,而是像浏览器一样发送get或者post请求.然后站点返回client能理解的数据格式,client解析这些数据.显示在界面上.经常使用的数据格式是x ...
- C#变量引用与全局变量
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...