如何使用离子框架在Angularjs中使用ng-repeat的值重新填充动态ng模型字段

时间:2016-05-26 06:44:09

标签: javascript angularjs ionic-framework

我正在使用离子框架来构建应用程序。在我的表单中,我需要重新填充动态ng模型输入字段。我引用“How to create Dynamic ng-model in Angular”来创建动态ng-model字段。有用。但是,当我试图重新填充该字段时,它无法正常工作(我需要执行CRUD操作)。

我的HTML部分是:

Integer.parseInt("42")

我的控制器是这样的

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

$ scope.userList中的JSON值,如此

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

我需要markscardData.actual_marks [user.user_id]在编辑模式下打开表单时重新填充,它也允许更新。请帮帮我。提前致谢。

2 个答案:

答案 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 = []; 希望这对你有用.. :))

答案 1 :(得分: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;
   });
}

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