Angularjs更新来自另一个输入框的输入

时间:2014-04-25 23:54:30

标签: javascript jquery angularjs

您好我有以下情况

我有以下html Wh

 <body ng-app="myApp" ng-controller="MyController">
      <input type="text" placeholder="enter a number" ng-model="c.num"  on-blur="test()" />
    <input type="text" ng-model="c.Id" ng-init="c.Id = pId" />
  </body>

在我的控制器上我有

  $scope.test=function() { 
  $scope.pId = $scope.num+1;
  };

因此,当第一个框中输入5时,第二个框应该更新6.但它没有。 请让我知道如何解决它。谢谢 这是它的plunker http://plnkr.co/edit/9QoMwsjUBl8CNAFgtYcj?p=preview

4 个答案:

答案 0 :(得分:0)

ng-blur是要走的路:

标记:

<body ng-app="myApp" ng-controller="MyController">
  <input type="text" placeholder="enter value" ng-model="num" ng-blur="test()" />
  <input type="text" ng-model="pId" />
</body>

控制器

angular.module('myApp', [])
.controller('MyController', function($scope) {
  $scope.c = {};

  $scope.test = function() {
    $scope.pId = parseInt($scope.num) + 1;
  };
});

答案 1 :(得分:0)

请检查第一个ng型号是否正确。我想你想要这个:

 <body ng-app="myApp" ng-controller="MyController">
    <input type="text" placeholder="enter a number" ng-model="num"  on-blur="test()" />
    <input type="text" ng-model="c.Id" ng-init="c.Id = pId" />
  </body>

答案 2 :(得分:0)

通过查看代码,我不确定对象'c'是什么或它被实例化的位置。我也不认为你正在使用ng-init。在下面的文档中,它建议仅在角度上下文中不可用的范围中使用它(例如ng-repeats)。

如何将html更改为

<body ng-app="myApp" ng-controller="MyController">
    <input type="text" placeholder="enter a number" ng-model="num"  ng-blur="test()" />
    <input type="text" ng-model="pId" />
</body>

并保持您的JavaScript相同。

编辑: Angular文档https://docs.angularjs.org/api/ng/directive/ngInit

答案 3 :(得分:0)

工作fiddle

  • 我删除了ng-init,不需要它。
  • 参考了正确的变量。
  • 将输入类型更改为数字(然后不需要parseInt)。否则你会得到5 + 1 = 51。

    $scope.test=function() { 
      $scope.c.Id = $scope.c.num + 1;
    };
    

您的updated plunker