AngularJS:ng单击时值更改时,ng更改不起作用

AngularJS:ng单击时值更改时,ng更改不起作用,angularjs,angular-ngmodel,angularjs-ng-click,angularjs-ng-change,Angularjs,Angular Ngmodel,Angularjs Ng Click,Angularjs Ng Change,我创建了一些控制按钮来处理服务器端分页。它有4个按钮(第一页、上一页、下一页和最后一页)、一个作为输入文本字段的页面计数器和一个用于选择要查看的行数的下拉列表 页面计数器在控制器中定义为vm.currentPage,可通过按钮或在输入中键入新值来操作,下拉菜单为vm.rowsPerPage。对于这两个元素,我声明了一个ng更改,其中包含一个最终必须获取数据的函数,称为vm.setPagingData() 我这里的问题是,即使输入文本中的vm.currentPage正在更改,当我使用其中一个控制按

我创建了一些控制按钮来处理服务器端分页。它有4个按钮(第一页、上一页、下一页和最后一页)、一个作为输入文本字段的页面计数器和一个用于选择要查看的行数的下拉列表

页面计数器在控制器中定义为vm.currentPage,可通过按钮或在输入中键入新值来操作,下拉菜单为vm.rowsPerPage。对于这两个元素,我声明了一个ng更改,其中包含一个最终必须获取数据的函数,称为vm.setPagingData()

我这里的问题是,即使输入文本中的vm.currentPage正在更改,当我使用其中一个控制按钮时,该函数也不会被触发

当我直接更改输入中的值或使用下拉菜单选择要查看的行数时,没有问题

下面是一个示例代码,函数setPagingData()每次调用时都会将一个值递增1。Plnkr链路:

html:

我是否应该定义控制器内按钮的逻辑,而不是ng change或其他内容?或者有没有办法将其保存在HTML中?

如中所述,当用户手动更改输入字段的值时,会触发
ng change

可用的解决方案:

使用ngClick 在按钮的
ng中调用
ctrl.setPagingData()

<button ng-click="ctrl.currentPage = ctrl.currentPage + 1; ctrl.setPagingData();" ng-disabled="ctrl.currentPage >= ctrl.totalPages"> > </button>
<button ng-click="ctrl.currentPage = ctrl.totalPages; ctrl.setPagingData();" ng-disabled="ctrl.currentPage >= ctrl.totalPages"> >> </button>

仅用于手动用户输入。从Ah内部使用或调用
vm.setPagingData()
,这样才有意义。我将在ng click中使用函数。如果你能回答这个问题,我会把它标记为已回答
vm.currentPage = 1;
vm.totalPages = 16;
vm.rowsPerPage = "20";

vm.test = 0;

vm.setPagingData = function(){
  vm.test++;
}
<button ng-click="ctrl.currentPage = ctrl.currentPage + 1; ctrl.setPagingData();" ng-disabled="ctrl.currentPage >= ctrl.totalPages"> > </button>
<button ng-click="ctrl.currentPage = ctrl.totalPages; ctrl.setPagingData();" ng-disabled="ctrl.currentPage >= ctrl.totalPages"> >> </button>
$scope.$watch(function() {
  return vm.rowsPerPage;
}, function() {
  vm.setPagingData();
});