У меня есть сетка на моей странице, щелкнув по строке в этой сетке, Пользователь может видеть форму для редактирования значений этой строки. Проблема в том, что я использую ng-repeat, чтобы отображать данные и вложенные значения, отображаемые как [Объект объекта]. Как получить доступ к этим значениям? Я пробовал что-то вроде rowData[k].name
, но он возвращает только вторую часть формы, первая часть пуста. Где моя ошибка? Plunkerng-model получить доступ к вложенным объектам
Код:
$scope.load = function(){
$http({
method: "GET",
url: 'test.json'
})
.then(function success(response) {
$scope.rowData = response.data;
console.log($scope.rowData)
}, function error(response) {
console.log("It has happend error in response")
}).then(function(){
$scope.id = $scope.rowData.id;
console.log($scope.id);
$scope.rowKeys = Object.keys($scope.rowData);
})
}
HTML:
<form style="padding: 15px" ng-submit="submitForm()" >
<div class="form-group row">
<div ng-repeat="k in rowKeys | filter: '!0' | filter: '!$$'" ng-model="rowVal" >
<div ng-if="(k === 'id' || k.toLowerCase().endsWith('id') === false) ? true : false">
<label for="rowValue" class="col-sm-2">
{{k | hide:'.name' | makeUppercase }}:
</label>
<div class=" col-sm-2" >
<input class="form-control rowValue" id="rowValue"
ng-model="rowData[k]"/>
</div>
</div>
</div>
</div>
<button type="submit" class="btn btn-default" ng-if="rowData">Save</button>
<button type="button" class="btn btn-default" ng-if="rowData" ng-click="cancelForm()">Cancel</button>
</form>
Да, он работает и не возвращает никаких ошибок в консоли, но как насчет
Не получил ваш вопрос полностью. На 2 идентификатора, если вы имели в виду два идентификатора ввода для одного и того же 'label', тогда ответ будет только одним из элементов ввода, который будет создан в DOM, а другой будет удален из DOM. Таким образом, для метки есть только один идентификатор (поле ввода). – Saad
Я обновил плункер с некоторыми другими модификациями. Я сделал значение «label for», чтобы указать на id окна ввода, удалил 'ng-model' из div' ng-repeat'. Если вы нажмете на метку, курсор теперь укажет на поле ввода. И нет смысла ставить 'ng-model' в div, поэтому удалил его. – Saad