我有一系列像这样的项目
[{
name: "name213",
value: "value1"
}, {
name: "name122",
value: "value2"
}]
我想在这个数组的一个对象上建模我的输入,但我不知道这个位置。我只知道他的名字。
最好的方法是什么? 在数组初始化期间,将对象保存在var中?将输入绑定在另一个对象上,当我想保存它时,将它与数组合并?
答案 0 :(得分:0)
(在我的评论中我反过来说,所以我决定修复它并将其作为答案发布)
您可以在输入字段上使用ng-change
来更改对象的值。要找到它,只需使用可应用于数组的ES6方法.find()
。长话短说,这里是一个动态的演示:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.array = [
{ name : "a", value: "1"}, {name: "b", value: "2"},
{ name : "c", value: "3"}, {name: "d", value: "4"},
{ name : "e", value: "5"}, {name: "f", value: "6"},
{ name : "g", value: "7"}, {name: "h", value: "8"}
]; // your array
$scope.selected = 'a'; // default value for a `name`
$scope.find = function(name){
/* can be replaced with a for loop if ES6 is not supported */
$scope.array.find((e)=>{return e.name == name}).value = $scope.model;
}
$scope.change = function(e){
$scope.selected = e;
$scope.model = ""; // clear the model
}
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
Names: <button ng-repeat="x in ['a','b','c','d','e','f','g','h']" ng-click="change(x)">{{x}}</button>
<br>
Selected: "{{selected}}"
<br>
New Value for that name: <input ng-model="model" ng-change="find(selected)" type="text"/>
<br>
{{array}}
</div>
&#13;
我不确定你打算用第二个输入字段做什么,所以我留给你用我的代码调整它。