Javascript 在AngularJS中的NgRepeat指令内获取用户输入

Javascript 在AngularJS中的NgRepeat指令内获取用户输入,javascript,angularjs,angularjs-directive,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Repeat,我有一个AngularJS应用程序,它有一个ngRepeat指令。在指令中,我有一个文本框,用户可以使用它输入数值。当文本框发生变化时,我希望接受用户输入并对其进行操作。如何将用户输入传递到ngChange事件 <table> <tr ng-repeat="d in vm.data"> <td><input type="number" value="{{ d }}" ng-change="vm.onChange(userInput)" /&g

我有一个AngularJS应用程序,它有一个ngRepeat指令。在指令中,我有一个文本框,用户可以使用它输入数值。当文本框发生变化时,我希望接受用户输入并对其进行操作。如何将用户输入传递到ngChange事件

<table>
  <tr ng-repeat="d in vm.data">
    <td><input type="number" value="{{ d }}" ng-change="vm.onChange(userInput)" /></td> <!-- How can I get the user input here? -->
  </tr>
</table>


(function () {
  var app = angular.module('TestApp', []);
  app.controller('TestCtrl', [function () {
    var vm = this;
    vm.data = [1, 2, 3];

    vm.onChange = function (inputValue) {
      // act on the change event...
    };

  }]);
})();

(功能(){
var app=angular.module('TestApp',[]);
app.controller('TestCtrl',[函数(){
var vm=这个;
vm.data=[1,2,3];
vm.onChange=函数(inputValue){
//对变更事件采取行动。。。
};
}]);
})();

您需要将该值绑定到VM中的某个内容。下面是一个例子:

(函数(){
var app=angular.module('TestApp',[]);
app.controller('TestCtrl',[函数(){
var vm=这个;
vm.data=[1,2,3];
vm.nums=[];
vm.onChange=函数(i){
console.log(nums[i]);
};
}]);
})();

首先,您的输入语法缺少一个“>”。
其次,您需要在输入中使用ng模型

代码如下:

<tr ng-repeat="d in vm.data">
    <td><input type="number" ng-change="vm.onChange(d.val)" ng-model="d.val"></td> 
</tr>

var vm = this;
    vm.data = [{val:1}, {val:2}, {val:3}];

    vm.onChange = function (val) {
      console.log(val);
    };

var vm=这个;
vm.data=[{val:1},{val:2},{val:3}];
vm.onChange=函数(val){
控制台日志(val);
};
观察
  • 您需要将模型添加到
    $scope
    中,即:
    $scope.data=[1,2,3]
  • 指令
    ng change
    ng model
    一起工作,因此您需要为每个输入设置该指令,即:
看看这个代码片段:

var-app=angular.module('TestApp',[]);
app.controller('TestCtrl',['$scope',函数($scope){
$scope.data=[1,2,3];
$scope.onChange=函数(inputValue){
console.log(输入值);
};
}]);