Я даю AngularJS bash и пробую небольшое тестовое приложение, где у меня есть список слева и на основе выбранного, обновите форму справа, чтобы разрешить редактирование параметров. Это HTML
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body ng-app="tstApp" ng-controller="tstCtrl">
<div>
<select size="2" style="width: 100px"
ng-model="selected"
ng-options="i as i.name for i in items track by i.name"
/>
</div>
<div>
<input type="text" name="descr" value="{{selected.descr}}"/><br/>
<input type="text" name="ref" value="{{selected.ref}}"/><br/>
</div>
<script src="test.js"></script>
</body>
</html>
и это JavaScript
var tstapp = angular.module('tstApp', [])
tstapp.controller('tstCtrl', function($scope) {
$scope.items = [
{
"name" : "ITEM1",
"descr" : "This is item1",
"ref" : "Reference1"
},
{
"name" : "ITEM2",
"descr" : "This is item2",
"ref" : "Reference2"
}
];
$scope.selected = $scope.items[0];
});
Проблема заключается в том, что когда вы фактически изменяете описание в поле редактирования, оно остается таким же и больше не отражает значение элемента массива. Я думаю, что причина, вероятно, очевидна в том, что "selected" - это копия элемента массива, а не элемент. Я не могу понять, как отредактировать элемент массива напрямую, хотя в данный момент выбран.
Вы должны привязать его как ng-модель, чтобы получить изменения
Как это
<input type="text" name="descr" ng-model="selected.descr"/>