カスタムバインディングを使用して、進行中のアイコン(スピナーまたはバー)を表示し、ajax呼び出しで価格を更新したいとします。KnockoutJS - アニメーションを追加するためにカスタムバインディングを使用する
Knockoutを使い始める前に、私はajaxメソッドの開始時にonUpdating()を呼び出した後、ajaxが正常に価格を返したときにonUpdated(price)を呼び出しました。
function onUpdating() {
$(".price").empty().html('<img src="/Content/Img/Site/progress.gif" />');
}
function onUpdated(price) {
$(".price").empty().html('£' + price);
}
私は今、ノックアウトを使用しているとして、私は、カスタムバインディングを使用したいのですが、私はちょうどそれがどのように動作するかのまわりで私の頭を取得傾けます。
ko.bindingHandlers.showProgress = {
init: function (element, valueAccessor) {
$(element).empty().html('<img src="/Content/Img/Site/progress.gif" />');
},
update: function (element, valueAccessor) {
$(element).empty().html('£' + valueAccessor());
}
}
<p>
Price: <span data-bind="showProgress: price"></span>
</p>
しかし、これがすべてでは動作しません:
私はこのような何かを推測します。どんな助けでも大歓迎です。
EDIT 次がきますが、そのは更新しながら、プログレスバーが表示されないことのようです:
ko.bindingHandlers.showProgress = {
update: function (element, valueAccessor) {
$(element).empty().html('<img src="/Content/Img/Site/progress.gif" />');
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).empty().html('£' + value);
}
}
こんにちはRyan、このお手伝いをありがとうございます。どのように私はそれが存在しているビューモデルに統合するのですか? – BrightonDev
サンプルコードやフィドルがありますか?実際にどこにでも '読み込み'観測値を追加することができます。したがって、あなたが投入している観測値の観測可能な部分である必要はありません。 –
Fiddleで適切な例を作成する方法を知らないので、Ryan、あなたに例のリンクを送ってきました。残念ながら私はまだ作業しているサイトへのリンクを投稿できません。 – BrightonDev