AngularJS - 阵列内部的动态表单
所以,我在这里的SSCCE。基本上,我有一个像这样的人的动态阵列:AngularJS - 阵列内部的动态表单
$scope.users = [
{
name: 'James',
data: []
},
{
name: 'Bob',
data: []
},
{
name: 'Walter',
data: []
}
];
我有表格,那些人需要填写。这些来自小而简单的指令。詹姆斯必须填写这两个指令的形式,鲍勃必须填写一个,沃尔特已经填写了一个(但它是鲍勃没有填写的)。
这些形式都像$scope.basicDataFormData
和$scope.styleRequestFormData
对象的形式,并在主要层面,我们重视它像这样:
$scope.data = {
basic_data: $scope.basicDataFormData,
style_request: $scope.styleRequestFormData
}
在$scope.menu.currentIndex
,我们执政显示哪些用户页面,这是复位为0
或者在您点击Next user
时增加。
所以,每个用户的data
对象,从$scope.users
,是基于什么当前$scope.data
是吧?错误。
https://plnkr.co/edit/zGVPViVTkepGB1ZO3PbU?p=preview
正如你所看到的,这是行不通的正是它是如何猜想。从示例中,表单数据被复制到下一个。而现在,当next user
被按下时,当menu.currentIndex
明显仅指示1
时,用户1和用户2都获得相同的确切数据。
有人可以帮我吗?
它应该工作的方式是所有这些表单只能写入menu.currentIndex
所在的当前用户的data
对象。这样,每个表单都可以持续到该用户的表单视图。詹姆斯应该有他,而鲍勃和沃尔特数据内的两个对象只有1
在你像这样分配一个对象到另一个对象的初始化函数:
function initialize() {
$scope.data.basic_data = $scope.basicDataFormData;
$scope.users[$scope.menu.currentIndex].data = $scope.data;
}
这是不正确的,因为它只是点他们到了记忆中的同一个地方。相反,你想克隆该对象。见https://docs.angularjs.org/api/ng/function/angular.copy。
的功能应该是:
function initialize() {
$scope.data.basic_data = angular.copy($scope.basicDataFormData);
$scope.users[$scope.menu.currentIndex].data=angular.copy($scope.data);
}
我宁愿不将jQuery与Angular混合,并希望在Angular中找到解决方案。 – nn2
好吧,那么使用angular.copy https://docs.angularjs.org/api/ng/function/angular.copy –
无论哪种方式,重点是你想手动将对象复制到另一个对象,而不是分配它用=运算符 –
在这个固定的东西?我不能重现这个问题? – Searching