2016-05-26 6 views
0

イオンフレームワークを使用してアプリケーションを作成しています。私のフォームでは、動的な入力モデルの入力フィールドを再設定する必要があります。私は "How to create Dynamic ng-model in Angular"を参照してダイナミックなng-modelフィールドを作成します。できます。しかし、私はそのフィールドを再配置しようとしているときには機能していませんでした(私はCRUD opearationを実行する必要があります)。イオンフレームワークを使用してAngularjsのng-repeatからの値を取得したときに動的ng-modelフィールドを再設定する方法

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

私のコントローラは、私はmarkscardData.actual_marksを必要とするこの

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

のような$ scope.userListでこの

.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値のようなものです[user.user_id]は、フォームが編集モードで開いているときに再入力し、更新も許可します。これで私を助けてください。前もって感謝します。

+0

、単にモデルが作成されていない、定義されていない変数がある、我々は全体の例を必要とするため –

答えて

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 = []; ・ホープ.. :)

+0

感謝回答。それは私のために働く。コードは$ scope.markscardData = {}です。 $ scope.markscardData.actual_marks = []; $ http.get(baseUrlに+ "api_method = markscard.getUserList&api_version = 1.0&app_key = 12345&Course_IDに=" +コース+ "&subject_id =" +件名+ "&markscard_id =" + markscard).then(関数(応答){ $ scope.userList = scope.userList [i] .user_id] = $ scope.userList [] {console.log($ scope.markscardData.actual_marks [$ scope.userList [i] .user_id] i] .actual_marks); } });同じhtml –

0

: また、あなたは開始時にこれらの2つの宣言を配置する必要があります応答のコードはうまくいくはずです:

フィールドの値を更新しようとしていると仮定して、呼び出し可能なメソッドを作成します。あなたが作成したモデルを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

返信ありがとうございます。あなたが作成したjsfiddleが表示されます。しかし、ng-model = "markscardData.actual_marks [user.user_id]"フィールドは再設定されません。 –

+0

'更新'ボタンをクリックしましたが、最初のフィールドの値を 'updatedList'配列から更新しました –

+0

申し訳ありません。これについて特別な知識をお寄せいただきありがとうございます。私はフォームフィールドを更新することを意味します。私はちょうどionulaフレームワークとangulajsで作業を開始しています。返信のおかげで –

関連する問題