博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Knockout>The "template" binding
阅读量:5948 次
发布时间:2019-06-19

本文共 3561 字,大约阅读时间需要 11 分钟。

Knockout的模板绑定,

模版可以用来方便构建复杂的HTML界面,比如拥有嵌套结构的HTML代码页面。

Knockout有两种方式使用模板:

1.Knockout自带的模板引擎。

2.第三方的模版引擎,比如jQuery.tmpl

Knockout自带模版引擎的参数列表:

data-bind=
"template: { name: 'person-template', data/foreach: buyer,afterRender/afterAdd/beforeRemove}"

name参数就是所对应你定义的模板id,

data参数就是你的模板数据源,指向一个js对象;foreach参数也是,指向一个js对象数组。

 

afterRender/afterAdd/beforeRemove这三个,就是事件咯,触发时机看名字,它们回调函数。

 

 

第一个例子, 没什么好说

<!
DOCTYPE html
>
<
html
>
<
head
>
<
meta 
http-equiv
="Content-Type"
 content
="text/html; charset=utf-8"
 
/>
<
title
>The "template" binding
</
title
>
<
script 
type
="text/javascript"
 src
="../jquery-1.7.1.js"
></
script
>
<
script 
type
="text/javascript"
 src
="../knockout-2.0.0.debug.js"
></
script
>
<
script 
type
="text/javascript"
>
$(
function
(){
    
function
 MyViewModel() {
        
this
.buyer 
=
 { name: 
'
Franklin
'
, credits: 
250
 };
        
this
.seller 
=
 { name: 
'
Mario
'
, credits: 
5800
 };    
    }
    ko.applyBindings(
new
 MyViewModel());     
})
</
script
>
</
head
>
<
body
>
<
h2
>Participants
</
h2
>
Here are the participants:
<
div 
data-bind
="template: { name: 'person-template', data: buyer }"
></
div
>
<
div 
data-bind
="template: { name: 'person-template', data: seller }"
></
div
>
<
script 
type
="text/html"
 id
="person-template"
>
    
<
h3 data
-
bind
=
"
text: name
"
><
/
h3>
    
<
p
>
Credits: 
<
span data
-
bind
=
"
text: credits
"
><
/
span><
/
p
>
</
script
>
</
body
>
</
html
>

 

 

第二个例子:解释就是,第一个例子用了data参数,第二个例子用了foreach参数

<!
DOCTYPE html
>
<
html
>
<
head
>
<
meta 
http-equiv
="Content-Type"
 content
="text/html; charset=utf-8"
 
/>
<
title
>The "template" binding
</
title
>
<
script 
type
="text/javascript"
 src
="../jquery-1.7.1.js"
></
script
>
<
script 
type
="text/javascript"
 src
="../knockout-2.0.0.debug.js"
></
script
>
<
script 
type
="text/javascript"
>
$(
function
(){
    
function
 MyViewModel() {
        
this
.people 
=
 [
            { name: 
'
Franklin
'
, credits: 
250
 },
            { name: 
'
Mario
'
, credits: 
5800
 }
        ]
    }
    ko.applyBindings(
new
 MyViewModel());
})
</
script
>
</
head
>
<
body
>
<
h2
>Participants
</
h2
>
Here are the participants:
<
div 
data-bind
="template: { name: 'person-template', foreach: people }"
></
div
> 
<
script 
type
="text/html"
 id
="person-template"
>
    
<
h3 data
-
bind
=
"
text: name
"
><
/
h3>
    
<
p
>
Credits: 
<
span data
-
bind
=
"
text: credits
"
><
/
span><
/
p
>
</
script
>
</
body
>
</
html
>

 

第三个例子:动态选择模板,往name里面传入一个方法,用来筛选用哪个模板

<!
DOCTYPE html
>
<
html
>
<
head
>
<
meta 
http-equiv
="Content-Type"
 content
="text/html; charset=utf-8"
 
/>
<
title
>The "template" binding
</
title
>
<
script 
type
="text/javascript"
 src
="../jquery-1.7.1.js"
></
script
>
<
script 
type
="text/javascript"
 src
="../knockout-2.0.0.debug.js"
></
script
>
<
script 
type
="text/javascript"
>
$(
function
(){
    
var
 viewModel 
=
 {
        employees: ko.observableArray([
            { name: 
"
Kari
"
, active: ko.observable(
true
) },
            { name: 
"
Brynn
"
, active: ko.observable(
false
) },
            { name: 
"
Nora
"
, active: ko.observable(
false
) }
        ]),
        displayMode: 
function
(employee) {
            
return
 employee.active() 
?
 
"
active
"
 : 
"
inactive
"
;
        }
    };
    
//
viewModel.employees()[1].active(true);
    ko.applyBindings(viewModel);
})
</
script
>
</
head
>
<
body
>
<
h2
>Participants
</
h2
>
Here are the participants:
<
div 
data-bind
="template: { name: displayMode, foreach: employees }"
></
div
> 
<
script 
type
="text/html"
 id
="active"
>
    active:
<
span data
-
bind
=
"
text: name
"
><
/
span>
</
script
>
<
script 
type
="text/html"
 id
="inactive"
>
    inactive:
<
span data
-
bind
=
"
text: name
"
><
/
span>
</
script
>
</
body
>
</
html
>

 

至于如何用第三方模板引擎,比如jQuery.tmpl就不说了。

转载于:https://www.cnblogs.com/samwu/archive/2012/04/08/2437873.html

你可能感兴趣的文章
num_plus_sep
查看>>
将博客搬至CSDN
查看>>
Spring2.5学习笔记2-AOP-基本概念
查看>>
TCP/IP三次握手详细过程
查看>>
马哥linux+python——2015年9月1日课程作业
查看>>
你的梦想还在吗
查看>>
BIGIP-LTM中的NAT和SNAT
查看>>
sed单行处理命令奇偶行输出
查看>>
走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
查看>>
VC++深入详解学习笔记1
查看>>
对OpenBSD中的OSPF和BGP路由协议的探索
查看>>
安装配置discuz
查看>>
CentOS7 64位小型操作系统的安装
查看>>
线程互互斥锁
查看>>
KVM虚拟机&openVSwitch杂记(1)
查看>>
使用Jmeter进行http接口测试
查看>>
win7下ActiveX注册错误0x80040200解决参考
查看>>
python自动化创建mysql多实例
查看>>
《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1-正确认识软件架构...
查看>>
网址收藏
查看>>