Как повторно заполнить поля Динамической модели ng, когда значение из ng-repeat в Angularjs, использует ионную структуру [duplicate]

0

Я использую ионную структуру для создания приложения. В моей форме мне нужно повторно заполнить поле ввода динамической 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] повторно заполнялся, когда форма открыта в режиме редактирования, и она также позволяет обновлять. Пожалуйста помоги мне с этим. Заранее спасибо.

  • 0
    Вам не хватает большого количества кода в вашем контроллере, есть переменные, которые просто не определены, модель не создана, нам нужен целый пример
Теги:
ionic-framework

2 ответа

1
Лучший ответ

Я предполагаю, что вы теряете данные при перезагрузке страницы. Это происходит потому, что динамические 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 = []; Надеюсь, что это работает для вас.. :)

  • 0
    Спасибо за ответ. Это работает для меня. Теперь этот код: $ scope.markscardData = {}; $ scope.markscardData.actual_marks = []; $ 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.result; for (var i в $ scope.userList) {console.log ($ scope.markscardData.actual_marks [$ scope.userList [i] .user_id] = $ scope.userList [i] .actual_marks);} }); и тот же HTML
0

Я на самом деле не уверен, что вы делаете, поскольку код, который вы предоставили с кодом в ответе, должен работать нормально:

Предполагая, что вы просто пытаетесь обновить значения полей, я бы создал метод, который вы можете вызвать, с массивом пользователей в качестве его параметра, а затем беспорядок с созданной вами моделью с именем 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;
   });
}

ДЕМО: https://jsfiddle.net/qvw9bmhe/35/

  • 0
    Спасибо за ответ. Я вижу jsfiddle, который вы создали. Но поле ng-model = "markscardData.actual_marks [user.user_id]" не заполняется повторно.
  • 0
    Вы нажали кнопку «обновить», она обновляет значение первого поля из массива updatedList
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню