このアプローチは、表示するテキストを決定するためにブール値のオブザーバブルを参照する、計算されたオブザーバブルを作成します。
これが動作する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 ());
編集
私の最初の応答は、フェードアウト、待機、およびフェードインではありませんでした。
ko.bindingHandlers.fadeVisible = {
update: function(element, valueAccessor) {
var value = valueAccessor();
$(element).fadeOut('slow', function () {
$(element).html(ko.utils.unwrapObservable(value)).fadeIn();
});
}
};