1

変数を設定しています

var extQty;

次に、ユーザーがデータを入力して送信すると、extQty を含む json 文字列が返されます。成功すると、変数を更新しています:

    success: function (result) {
         window.extQty = result.extQty;
     }

extQty がグリッドの行数を超える場合、ボタンを非表示にする必要があります。これどうやってするの?以下を試しましたが、extQty が更新される前に既にロードされているため、変数の変更は見られません。

 <!-- ko if: pagedList().length < extQty -->

上記のextQtyを3に変更すると動作します...

4

2 に答える 2

3

変数をako.observableにして、ビューモデルの一部にします。

function viewModel() {
    this.extQty = ko.observable(0);
    this.pagedList = ko.observableArray();
    //....
}

var myViewModel = new viewModel(); 
ko.applyBindings(myViewModel);

次に、AJAXでsuccess

success: function (result) {
     myViewModel.extQty(result.extQty);
}
于 2013-03-22T00:47:01.297 に答える
0

あなたのフィドルを更新しようとしました:-

あなたのフィドルが更新されました

<div data-bind="style: { display: (pagedList().length < extQty()) ? 'block' : 'none' }">
    <p class="pull-right">
        <a class="btn btn-primary" data-bind="click: $root.add" href="#" title="edit"><i class="icon-plus"></i>Add Extension</a>
    </p>
</div>

間違っている場合は訂正してください。バインドする場合に使用すると、true または false の条件に基づいて、ドキュメントからマークアップを表示または非表示にすることができます。条件が false の場合、HTML で表示すると、要素はコメント アウトされたコードになります。ページを更新しないと変更できません。したがって、visible バインディングを使用すると、マークアップは dom にとどまり、Visible バインディングを操作して非表示または表示することができます...

Knockout If Binding のドキュメントをご覧ください。

于 2013-03-22T08:31:19.317 に答える