2016-05-26 2 views
0

Ich benutze ionic Framework, um eine App zu erstellen. In meiner Form muss ich das dynamische ng-Modell-Eingabefeld neu füllen. Ich verweise "How to create Dynamic ng-model in Angular", um das dynamische ng-Modellfeld zu erstellen. Es klappt. Aber wenn ich versuche, dieses Feld wieder zu füllen, hat es nicht funktioniert (ich muss CRUD-Betrieb durchführen).Wie man die dynamischen ng-Modellfelder wieder füllt, wenn der Wert von ng-repeat in Angularjs mit dem ionischen Framework

Mein HTML-Teil ist:

<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> 

Mein Controller ist wie dieser

.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; 
    }); 
}) 

Der Wert JSON in $ scope.userList wie diese

[{"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"}] 

I markscardData.actual_marks brauchen [user.user_id] wird neu befüllt, wenn das Formular im Bearbeitungsmodus geöffnet ist, und erlaubt auch das Aktualisieren. Bitte helfen Sie mir dabei. Danke im Voraus.

+0

Sie in Ihrem Controller, eine Menge Code fehlt es gibt Variablen, die einfach nicht definiert sind, wird das Modell nicht erstellt haben, müssen wir das ganze Beispiel –

Antwort

1

Ich nehme an, Sie verlieren Daten, wenn Sie die Seite neu laden. Dies geschieht, weil die dynamischen ng-Modelle nicht wirklich in Ihrem Controller gebunden sind. Wenn Sie aktuelle Marken aus dem JSON Sie erhalten,

for(var i in userList){ 
    $scope.markscardData.actual_marks[userList[i].user_id] = userList[i].actual_marks; 
} 

setzen Sie diese Zeile unter $scope.userList = response.data.responseMsg; laden möchten. Dies sollte Ihre dynamischen Modelle ggf. initialisieren. Außerdem müssen Sie diese beiden Erklärungen am Anfang setzen: $scope.markscardData = {}; $scope.markscardData.actual_marks = []; Hope this für Sie .. :)

+0

Vielen Dank für die Antworten. Es funktioniert für mich. Jetzt ist der Code $ scope.markscardData = {}; $ scope.markscardData.actual_marks = []; $ http.get (baseUrl + "api_method = markscard.getUserList & api_version = 1.0 & app_key = 12345 & course_id =" + Verlauf + "& subject_id =" + Subjekt + "& markscard_id =" + markscard) .then (function (response) { $ scope.userList = response.data.responseMsg.result; für (var i in $ scope.userList) { console.log ($ scope.markscardData.actual_marks [$ scope.userList [i] .user_id] = $ scope.userList [ i] .actual_marks;) } }); und selbe html –

0

Ich bin nicht wirklich sicher, was Sie Problem so groß wie der Code, den Sie zur Verfügung gestellt haben mit dem Code in der Antwort sollte gut funktionieren:

Angenommen, Sie nur versuchen, die Werte der Felder zu aktualisieren, dann würde ich eine Methode erstellen, die Sie aufrufen können, mit dem Array von Benutzern als Parameter, und Verwechseln Sie dann das Modell, das Sie erstellt haben, 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; 
    }); 
} 

DEMO: https://jsfiddle.net/qvw9bmhe/35/

+0

Danke für die Antwort. Ich sehe das Spiel, das du erstellt hast. Das Feld ng-model = "markscardData.actual_marks [user.user_id]" wurde jedoch nicht neu ausgefüllt. –

+0

Haben Sie auf den Knopf 'update' geklickt, aktualisiert es den Wert des ersten Feldes aus dem Array 'updatedList' –

+0

Sorry, ich bin nicht bemerkt. Danke, dass Sie zusätzliches Wissen dazu gegeben haben. Ich meine in update das Formularfeld. Ich habe gerade angefangen mit angulajs mit ionischen Rahmen zu arbeiten.danke für die Antwort –

Verwandte Themen