我有一个名单列表(人员列表中的工作人员),我从中选择一些名称并将它们作为对象添加到数组(paxlist)。重复此操作,因此将多个具有不同名称的对象添加到数组中。
我尝试做的是能够编辑这些对象中的每一个以添加或删除名称。
出于用户体验的原因,当我首次从stafflist
中选择名称时,它们会变为蓝色,并在添加对象时重置为白色。
基本上,我正在寻找的效果/功能是:
添加了对象 - >主要列表重置
点击其中一个对象的编辑按钮
将对象的名称列表与主列表进行比较,并将相关名称突出显示(蓝色)作为现有/已选择的名称。
用户选择或取消选择名称。
完成编辑,保存生成的对象并重置主列表。
我有 Plunkr 描述添加功能,但我不清楚如何比较并使2个变量(记录列表中的stafflist和pax)一起工作至于编辑结果。
我并不是特意找人去为我解决这个问题,而是更多地了解可能的解决方案背后的逻辑,因为到目前为止我无法想到任何事情......
任何评论都将受到高度赞赏!
答案 0 :(得分:1)
我用我认为你想要完成的东西创建了一个新的Plunk。基本上我只是添加了一个新状态(editMode),它捕获了正在编辑的pax。
var editMode;
$scope.editRecord = function(record) {
editMode = record.pax;
$scope.stafflist.forEach(function (s) {
s.chosen = false;
});
record.pax.forEach(function(p) {
$scope.stafflist.forEach(function (s) {
if(p.name === s.name) {
s.chosen = true;
}
});
});
};
然后,我使用这个新状态来确定我是创建新记录还是编辑现有记录。
$scope.pushStaff = function (staff) {
staff.chosen = true;
var arr = editMode || $scope.paxlist;
arr.push(staff);
};
$scope.unpushStaff = function (staff) {
staff.chosen = false;
var arr = editMode || $scope.paxlist;
var index=arr.indexOf(staff);
arr.splice(index,1);
};
我确信有更清洁的方法,但这是一种方法。