我正在设置一个变量
var extQty;
然后用户输入一些数据并提交,我返回一个带有extQty的json字符串。成功后,我正在更新变量:
success: function (result) {
window.extQty = result.extQty;
}
如果extQty超过网格的行数,我需要隐藏按钮。我该怎么做呢?我试了下面的,但它没有看到变量的变化,因为这已经加载之前extQty得到更新。
<!-- ko if: pagedList().length < extQty -->
如果我将上面的extQty改为3,它可以工作…
将变量设置为ko.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);
}
尝试更新您的小提琴:-
Your Fiddle Updated
<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>
如果我错了请纠正我,当你使用if绑定时,它允许标记根据真或假的条件从你的文档中出现或消失。当条件为false时,在html中看到的代码中,元素将被注释掉。除非刷新页面,否则无法更改。所以,使用可见绑定,标记留在dom中,你可以使用可见绑定来隐藏或显示它…
看看Knockout If Binding文档