使用AngularJS比较和隔行变量以进行编辑

时间:2014-12-21 09:17:54

标签: javascript angularjs

我有一个名单列表(人员列表中的工作人员),我从中选择一些名称并将它们作为对象添加到数组(paxlist)。重复此操作,因此将多个具有不同名称的对象添加到数组中。

我尝试做的是能够编辑这些对象中的每一个以添加或删除名称。

出于用户体验的原因,当我首次从stafflist中选择名称时,它们会变为蓝色,并在添加对象时重置为白色。

基本上,我正在寻找的效果/功能是:

  1. 添加了对象 - >主要列表重置

  2. 点击其中一个对象的编辑按钮

  3. 将对象的名称列表与主列表进行比较,并将相关名称突出显示(蓝色)作为现有/已选择的名称。

  4. 用户选择或取消选择名称。

  5. 完成编辑,保存生成的对象并重置主列表。

  6. 我有 Plunkr 描述添加功能,但我不清楚如何比较并使2个变量(记录列表中的stafflist和pax)一起工作至于编辑结果。

    我并不是特意找人去为我解决这个问题,而是更多地了解可能的解决方案背后的逻辑,因为到目前为止我无法想到任何事情......

    任何评论都将受到高度赞赏!

1 个答案:

答案 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);     
};

我确信有更清洁的方法,但这是一种方法。