获取所有输入字段on

时间:2016-09-15 07:00:31

标签: javascript angularjs angularjs-scope

我制作了以下代码(jsFiddle)来获取文本字段的输入:

var app = angular.module('myApp', [
    'my.controllers'
]);

var controllers = angular.module('my.controllers', []);
controllers.controller('MyController', function($scope) {

});

controllers.controller('listdata', function($scope, $http) {

    $scope.editItem = function(event) {
        var fieldTitle = $(event.currentTarget).attr("data-id");
        var fieldValue = event.target.value;
        console.log(fieldTitle + " : " + fieldValue);
    };
})

在这种情况下,该函数仅返回文本更改的字段名称和字段值。当其中一个字段发生变化时,获取所有输入字段的所有值的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

关于你的问题

"当其中一个字段被更改时,获取所有输入字段的所有值的正确方法是什么?" this fiddle向您展示了在字段更改后获得所有结果的正确方法之一。

基本思想是对输入字段使用ng-model指令:实际上是你的代码

var fieldTitle = $(event.currentTarget).attr("data-id");
var fieldValue = event.target.value;

这是一个你没有想到的标志(我建议你阅读this excellent answer以了解你应该做些什么)。

解决方案

使用ng-model将变量绑定到范围,并使用ng-change来拦截变量:

<input type="text" ng-model="id" ng-change="editItem(id)">
<input type="text" ng-model="title" ng-change="editItem(title)">
<input type="text" ng-model="number" ng-change="editItem(number)">

并在您的控制器中:

$scope.editItem = function (value) {
    console.log("currentValue" + value);
    console.log("ID:" + $scope.id + " Title: " + $scope.title +" Number:" + $scope.number);
};

答案 1 :(得分:0)

首先,你没有在输入框中使用ng-model指令,因此如果你在特定输入上使用ng-change和ng-blur,它肯定会出错。

<input type="text" data-id="id" ng-model="itemList.input1" ng-change="editItem()">
<input type="text" data-id="title" ng-model="itemList.input2" ng-blur="editItem()">
<input type="text" data-id="number" ng-model="itemList.input3" ng-blur="editItem()">

这是一个 jsfiddle我在console.log中有一个对象,它在模糊或输入变化时返回所有三个值。