我有一个index.html页面,可以保存我的整个前端webapp。它导入具有各种功能的javascript文件,并根据函数调用显示index.html页面中的数据。
我有一个数据库调用,然后是一些分页 - 分页是我的问题。我在index.html文件中有这两个按钮:
<li style="margin-left: 650px">
<button type="button" class="btn btn-default" data-bind="click: myApp.vm.previous, visible: previousEnabled()">Previous
</button>
<button type="button" class="btn btn-default" data-bind="click: myApp.vm.next, visible: nextEnabled()">Next
</button>
</li>
这是javascript文件中的previousEnabled和nextEnabled函数:
previousEnabled = ko.computed(function(){
console.log("previousEnabled check --------------------");
return _currentPage > 1;
});
nextEnabled = ko.computed(function(){
console.log("nextEnabled check --------------------");
return _currentPage < totalPage;
});
当我登录前端时,我只看到previousEnabled check和nextEnabled检查日志。当我从数据库中获取记录并希望翻阅它们时,我再也看不到了。似乎我的可见验证只发生一次,然后再也不会发生。这是为什么?
答案 0 :(得分:1)
假设_currentPage和totalPage变量都是可观察的,那么你不需要调用可见绑定中的函数,因为它们是计算的可观察对象;淘汰赛将会知道该怎么做。尝试从绑定中删除括号,例如使用data-bind="click: myApp.vm.previous, visible: previousEnabled"
作为绑定。
目前,您没有将可观察对象传递给可见绑定,而是调用该函数的输出(这是不可观察的并且不知道何时更新)。看看knockout documentation for computed observables。
这也是一个奇怪的点击绑定。通常我希望看到像data-bind="click: previous"
这样的东西。如果有疑问,请查看文档(我当然这样做)。
希望这有帮助。
答案 1 :(得分:0)
似乎你的使用ajax&amp;回发后js无效。
回发后 document.ready
不会运行。尝试将代码放在function pageLoad()
中,如:
function pageLoad()
{
//....
previousEnabled = ko.computed(function(){
console.log("previousEnabled check --------------------");
return _currentPage > 1;
});
nextEnabled = ko.computed(function(){
console.log("nextEnabled check --------------------");
return _currentPage < totalPage;
});
//....
}