Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用ng模型显示输入元素的不同值?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何使用ng模型显示输入元素的不同值?

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) {

在控制器if中,有一个变量跟踪分页表页的索引(从0开始):

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不知道这种机制,但它似乎是解决此类问题的正确方法。这是一个优雅的解决方案,不需要在虚拟机中添加额外的内容