我是角色的新手,面临使用物体预填充表格的问题。
例如,我有
- 页面A包含新员工信息的表单。
- 页面B以表格形式显示所有现有员工信息的列表,以及当用户点击我重定向到的任何员工行时 页面A包含用于编辑的预填充表单字段。
醇>
两个页面都使用相同的控制器。
<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
未定义,如何解决此问题,如何填写此表单字段,请帮忙。
答案 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
}