2016-04-25 159 views
1

我在前端有两个空的文本框,其中一个用于键值,另一个用于添加按钮和一个提交按钮。用户可以单击添加按钮以分别添加一对两个文本框,每个文本框分别代表键和值。使用angularjs动态创建键值对并将其传递给java地图

用户可以在文本框中随意添加任何文本作为关键字和任何文本作为值。 提交按钮是提交最终表格。 我想在angularJS中获取这些数据,并通过post请求将其传递给java Map。

具体来说,Java中的Map看起来像这样转换为Json。

{"A":"something","B":"something","C":"something","D":"value"} 

但我不能从前端使用angularJS动态地创建这样的结构。

+0

为什么不呢?发生什么事? – RafaelTSCS

回答

4

由于您需要映射键和值,我不会推荐数组。 我觉得这是你所需要的:

$scope.map={}; 
// Add header data 
$scope.addToMap=function() 
{ 
    $scope.map[$scope.key]=$scope.value; 
    $scope.key=""; //clear the textbox 
    $scope.value=""; //clear the textbox 
}; 

执行addToMap()点击您的按钮时。您还可以与非可编辑的文本框的ng-repeat,并运行ng-repeatmap

+0

这是我正在寻找的确切解决方案。非常感谢Dushyant。我没有权限对此答案进行投票。我希望如果有人能为我投票这个答案。 – Amit

+0

@Amit,您可以通过点击左侧的勾号选择它作为答案。你最终将获得声望,并将被允许投票。 :) –

0

试试这个 这里是工作fiddle

<div ng-controller="MyCtrl"> 
<div ng-repeat="item in items"> 
<input type="text" ng-model="item"> 
</div> 
    <button ng-click="addItem()">Add</button> 
    </div> 

控制器

var myApp = angular.module('myApp',[]); 
myApp.controller('MyCtrl',function($scope){ 
    $scope.items=['item1','item2','item3','item4','item5']; 

    $scope.addItem = function(){ 
    $scope.items.push(''); 
    } 
}) 
+0

这只是添加一个文本框。我需要每行两个,也都应该与关键值对关系连接。 – Amit

0

尝试下面的代码创建动态的JSON对象。

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

 
myApp.controller('MyCtrl', ['$scope', function MyCtrl($scope) { 
 
\t $scope.jsonObject = {}; 
 
    
 
    $scope.add = function(){ 
 
    \t $scope.jsonObject[$scope.key] = $scope.value; 
 
    }; 
 
    
 
    $scope.submitForm = function(){ 
 
    \t console.log($scope.jsonObject);  
 
    } 
 
}]);
<div ng-controller="MyCtrl"> 
 
    <form> 
 
    Key: <input ng-model="key"> 
 
    Value: <input ng-model="value"> 
 
    <button ng-click="add()">ADD</button> 
 
    <button ng-click="submitForm()">submit form</button> 
 
    </form> 
 
    
 
    <span>{{jsonObject}}</span> 
 
</div>

+0

感谢Sachin的回答,这对我很有用。它与Dushyant的解决方案非常相似。 – Amit

相关问题