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>

如果我错了,请纠正我,当您使用绑定时,它允许标记根据条件为真或假从您的文档中出现或消失。当您的条件为假时,当您在 html 中看到该元素时,该元素将被注释掉代码。除非您刷新页面,否则无法更改。因此,使用可见绑定,标记保留在 dom 中,您可以使用可见绑定来隐藏或显示它...

查看Knockout If Binding 文档

于 2013-03-22T08:31:19.317 回答