Javascript 如何使用ng模型显示输入元素的不同值?
在控制器if中,有一个变量跟踪分页表页的索引(从0开始):Javascript 如何使用ng模型显示输入元素的不同值?,javascript,angularjs,Javascript,Angularjs,在控制器if中,有一个变量跟踪分页表页的索引(从0开始): var page { pageNumber: 0; } 问题:如何在html中显示此pageNumber变量,但始终递增+1?(由于索引=0,页面显然是第一页,因此应显示为第1页) 此外,当模型更新时,输入中的值应自动更改(再次:也增加+1)。在控制器中,将页面对象更改为: $scope.page = { displayedPage: function(num) { if(arguments.length) {
var page {
pageNumber: 0;
}
问题:如何在html中显示此pageNumber
变量,但始终递增+1?(由于索引=0,页面显然是第一页,因此应显示为第1页
)
此外,当模型更新时,输入中的值应自动更改(再次:也增加+1)。在控制器中,将页面对象更改为:
$scope.page = {
displayedPage: function(num) {
if(arguments.length) {
$scope.page.pageNumber = num - 1;
return num;
} else {
return $scope.page.pageNumber + 1;
}
},
pageNumber: 0
}
<input type="text" ng-model="page.displayedPage" ng-model-options="{ getterSetter: true}" />
然后将您的元素添加到以下内容:
$scope.page = {
displayedPage: function(num) {
if(arguments.length) {
$scope.page.pageNumber = num - 1;
return num;
} else {
return $scope.page.pageNumber + 1;
}
},
pageNumber: 0
}
<input type="text" ng-model="page.displayedPage" ng-model-options="{ getterSetter: true}" />
这将显示页码加1,但保留实际的page.pageNumber变量
我添加的
getterSetter:true
选项将模型绑定到getter/setter函数,该函数允许您传入参数(在本例中是输入的页码)并从该函数返回。您可以在的文档中阅读有关这方面的更多信息。您可以尝试使用类似的方法
$scope.data=$scope.page.pageNumber+1;
$scope.fuc=function(){
$scope.page.pageNumber=$scope.data-1;
};
你的Html将是
<input type="text" ng-model="data" ng-change="fuc()" >
检查这个plunk我认为这是$formatters和$parser的一个用例。它们对模型的属性进行操作,不需要在模型上创建虚拟属性。文档如果这不是$formatters和$parser的用例,请纠正我 请看下面 HTML标记
<body ng-app="app" ng-controller="mainCtrl">
{{page}}
<input paginated-index type="text" ng-model="page">
</body>
我应该说我需要反向绑定,因此当
输入
元素中的值更改时,$scope.page.pageNumber
中的值应该更新。因此,我使用了ng model
,因为这是自动处理的。因此,需要明确的是,您原始问题中的
应该显示页码,但也可以用于更改页码?是的,用户可能能够更改该页码。但是由于前端应该显示pageindex总是增加+1,当用户更改此数字时,模型中的值也应该减少-1以反映这一点。我不知道GetterSiter:true的结果是什么,但它是有效的。也许你可以扩展你的答案,并向其他用户解释这一部分?这实际上是我在回答你的问题时学到的东西!我已经补充了我对该选项的理解,但我完全准备接受纠正。hahaI不知道这种机制,但它似乎是解决此类问题的正确方法。这是一个优雅的解决方案,不需要在虚拟机中添加额外的内容