AngularJS ng-model,具有对象的数组属性

时间:2018-03-01 13:49:22

标签: javascript angularjs

我有一系列像这样的项目

[{
  name: "name213",
  value: "value1"
}, {
  name: "name122",
  value: "value2"
}]

我想在这个数组的一个对象上建模我的输入,但我不知道这个位置。我只知道他的名字。

最好的方法是什么? 在数组初始化期间,将对象保存在var中?将输入绑定在另一个对象上,当我想保存它时,将它与数组合并?

1 个答案:

答案 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;
&#13;
&#13;

我不确定你打算用第二个输入字段做什么,所以我留给你用我的代码调整它。