无法预先填充AngularJS中的表单

时间:2016-02-28 12:43:50

标签: javascript angularjs forms scope

我是角色的新手,面临使用物体预填充表格的问题。
例如,我有

  
      
  1. 页面A包含新员工信息的表单。
  2.   
  3. 页面B以表格形式显示所有现有员工信息的列表,以及当用户点击我重定向到的任何员工行时   页面A包含用于编辑的预填充表单字段。   

    两个页面都使用相同的控制器。
  4.   
<form name="empForm">
        <div style="margin: 21px 10px 0px 10px;">
            <label style="margin-right: 36px;">Employee Name:</label> <input
                type="text" class="text-width text-color" ng-model="emp.fName"
                placeholder="Employee Name">
        </div>
        <div align="center">
                <button class="btn btn-default" ng-click="submitCorePack(emp)">Submit</button>
        </div>
</form>

在填写信息并提交表格时,我会收到信息 emp对象,我能够从该对象获取所有信息。在页面B上,我显示了注册员工的列表,如

<tr ng-repeat="employee in employeelist" ng-click="viewEmployee(employee)">
                    <td>{{$index + 1}}</td>
                    <td>{{employee.fName}}</td>                                                             
                </tr>

当用户点击任何一行时,我将员工对象传递给一个函数,该函数执行页面重定向和表单字段预填充。

                        $scope.viewEmployee=function(employee){
                            $scope.emp.fName=employee.fName;
                            $scope.go(); // Redirect to Page A
                        }

但我得到$scope.emp.fName 未定义,如何解决此问题,如何填写此表单字段,请帮忙。

2 个答案:

答案 0 :(得分:2)

  

使用您提供的代码,有点难以猜测并解决问题所以我只是发布一些快速选项

     

将$ rootScope注入Controller。更改   你的代码

$scope.viewEmployee=function(employee){
         $rootScope.emp=employee;//Save whole obj where you can play with that.              $scope.go(); // Redirect to Page A
                                       }
  

选项2: - WindowslocalStorage

window.localStorage.employee = employee; // check it in developer Tools --> resources -->LocalStorage(click on your Domain)

  

选项3: - 安装本地存储插件: -

https://github.com/gsklee/ngStorage

注入控制器,

  $localStorageProvider.get('MyKey');
  $localStorageProvider.set('MyKey', { k: 'value' });

答案 1 :(得分:1)

你必须定义$ scope.emp:

 $scope.viewEmployee=function(employee){
      $scope.emp = employee;
      $scope.go(); // Redirect to Page A
 }

或者:

$scope.emp = {};
$scope.viewEmployee=function(employee){
      $scope.emp.fName=employee.fName;
      $scope.go(); // Redirect to Page A
}