这种方法创建了一个计算的 observable,它查看 boolean observable 以确定要显示的文本。
这是一个工作的jsfiddle。http://jsfiddle.net/yq5rS/10/
这是代码的快速想法
html
<div class='liveExample'>
<p>
<label>
<input type='checkbox' data-bind='checked: display' />
Active?
</label>
</p>
<p data-bind='fadeVisible: IsActive()'></p>
</div>
脚本
var Model = function() {
var self = this;
self.display= ko.observable(false);
self.IsActive = ko.computed(function() {
if (self.display()) return "Active."
return "Not active."
});
};
ko.bindingHandlers.fadeVisible = {
init: function(element, valueAccessor) {
var value = valueAccessor();
$(element).hide().html(ko.utils.unwrapObservable(value)).fadeIn();
},
update: function(element, valueAccessor) {
var value = valueAccessor();
$(element).hide().html(ko.utils.unwrapObservable(value)).fadeIn();
}
};
ko.applyBindings(new Model ());
编辑
我的初始响应没有淡出,等待,然后淡入。这是一个更新的fadeVisible绑定处理程序
ko.bindingHandlers.fadeVisible = {
update: function(element, valueAccessor) {
var value = valueAccessor();
$(element).fadeOut('slow', function () {
$(element).html(ko.utils.unwrapObservable(value)).fadeIn();
});
}
};