Я использую ионную структуру для создания приложения. В моей форме мне нужно повторно заполнить поле ввода динамической ng-модели. Я называю " Создание динамической ng-модели в угловом " для создания динамического ng-модели. оно работает. Но когда я пытаюсь повторно заполнить это поле, он не работает (мне нужно выполнить CRUD-опорождение).
Моя часть HTML:
<div class="row header">
<div class="col col-40">Name</div>
<div class="col col-60">Marks</div>
</div>
<div class="row" ng-repeat="(key, user) in userList">
<div class="col col-40" ng-bind="user.name"></div>
<div class="col col-60">
<input type="text" name="actual_marks" ng-model="markscardData.actual_marks[user.user_id]" placeholder="Please enter the marks" />
</div>
</div>
Мой контроллер подобен этому
.controller('MarkscardAddCtrl', function($scope, $stateParams, $state, $http, $ionicPopup, baseUrl)
{
$scope.markscardData = {};
$http.get(baseUrl+"api_method=markscard.getUserList&api_version=1.0&app_key=12345& course_id="+course+"&subject_id="+subject+"& markscard_id="+markscard).then(function(response){
$scope.userList = response.data.responseMsg;
});
})
Значение JSON в $ scope.userList вот так
[{"name":"Harshith","user_id":"249","actual_marks":"76","min_marks":"40","max_marks":"100"},{"name":"Nithin","user_id":"246","actual_marks":"60","min_marks":"40","max_marks":"100"},{"name":"Prathik","user_id":"247","actual_marks":"70","min_marks":"40","max_marks":"100"},{"name":"Ravee","user_id":"250","actual_marks":"80","min_marks":"40","max_marks":"100"},{"name":"Shivarama","user_id":"248","actual_marks":"90","min_marks":"40","max_marks":"100"}]
Мне нужно, чтобы markscardData.actual_marks [user.user_id] повторно заполнялся, когда форма открыта в режиме редактирования, и она также позволяет обновлять. Пожалуйста помоги мне с этим. Заранее спасибо.
Я предполагаю, что вы теряете данные при перезагрузке страницы. Это происходит потому, что динамические ng-модели фактически не связаны в вашем контроллере. Если вы хотите загрузить фактические метки из полученной вами JSON,
for(var i in userList){
$scope.markscardData.actual_marks[userList[i].user_id] = userList[i].actual_marks;
}
поместите эту строку ниже $scope.userList = response.data.responseMsg;
, Это должно инициализировать ваши динамические модели, если это применимо. Кроме того, вам нужно будет поставить эти два объявления в начале: $scope.markscardData = {}; $scope.markscardData.actual_marks = [];
$scope.markscardData = {}; $scope.markscardData.actual_marks = [];
Надеюсь, что это работает для вас.. :)
Я на самом деле не уверен, что вы делаете, поскольку код, который вы предоставили с кодом в ответе, должен работать нормально:
Предполагая, что вы просто пытаетесь обновить значения полей, я бы создал метод, который вы можете вызвать, с массивом пользователей в качестве его параметра, а затем беспорядок с созданной вами моделью с именем markscardData
.
this.markscardData = {
actual_marks : {}
}
this.updateList = function(newList) {
angular.forEach(newList, function(user) {
if (!user || !user.user_id) return;
ctrl.markscardData.actual_marks[user.user_id] = user.actual_marks;
});
}
updatedList