////////////////////// 演示一、二 //////////////////////////
//演示ko的computed方法的第二个参数
var testOutModel = {
p1: '我来自外部对象'
};
function AppViewModel() {
var self = this;
self.firstName = ko.observable('Bob');
self.lastName = ko.observable('Smith');
//这是一个计算属性
self.fullName = ko.computed(function () {
return self.firstName() + " " + self.lastName() + ':' + this.p1;
}, testOutModel);
}
var model = new AppViewModel();
ko.applyBindings(model, document.getElementById("Demo1"));
<h1>演示 KnockOut Computed属性基本 功能</h1>
<hr />
<ul>
<li class="Point">
1、<b class="PointTitle">理解<span class="KeyWord">"computed"</span>属性的参数</b><br />
<ul class="PointDesc">
<li>第一个参数负责计算新的属性值</li>
<li>第二个参数负责指定第一个函数的this指针对象(函数调用对象)</li>
</ul>
<div class="PointDemo" id="Demo1">
firstName:<input type="text" data-bind='value: firstName, valueUpdate: "afterkeydown"' /><br />
lastName:<input type="text" data-bind='value: lastName,valueUpdate: "afterkeydown"' /><br />
动态计算的 fullName:<span class="Notice" data-bind='text: fullName'></span>
</div>
<!--下面写一些特殊的提示信息-->
<div class="PSFrame">
注意demo中computed的第二个参数传递了一个外部对象,所以在computed的function中就可以使用this访问到这个对象了
</div>
<hr />
</li>
</ul>
<hr />
body
{
background-color: #e3e5d4;
}
.Point
{
margin: 20px,0,0,0;
}
.PointTitle
{
color:#0d8d0d;
}
.KeyWord
{
color:Red;
}
.PointDesc
{
font-family: Arial;
font-size: 15px;
color:#09acb8;
}
.PointDesc li
{
margin: 10px,0,0,0;
}
.PointDemo
{
border-style:double;
border-color:#dcd559;
min-height:100px;
font-family: Corbel;
font-size: 20px;
color: #00174f;
}
.PSFrame
{
border-style: dashed;
border-color:#78e6ef;
font-family: Corbel;
font-size: 20px;
font-style:italic;
color: #b86c00;
}
.error {
color:Red;
}
/* ********************************************************** */
.Notice
{
font-weight: bold;
font-family:Bodoni MT Black;
color: #cd0707;
}
/* ********************************************************** */
input[type="text"]
{
min-width:250px;
}
select
{
min-width:400px;
}
External resources loaded into this fiddle: