splice()删除错误的索引或根本没有删除

时间:2016-11-28 18:28:25

标签: javascript angularjs

我有以下名为$scope.workflow的对象:

{
  "name":"Demo #1",
  "flow":[
    {
      "tasks":[
        {
          "name":"Task 1 Step 1",
          "$$hashKey":"object:25"
        },
        {
          "name":"Task 2 Step 1",
          "$$hashKey":"object:93"
        }
      ],
      "$$hashKey":"object:21"
    },
    {
      "tasks":[
        {
          "name":"Task 1 Step 2",
          "$$hashKey":"object:29"
        }
      ],
      "$$hashKey":"object:22"
    }
  ]
}

我有以下模板

<ul>
    <li ng-repeat="data in workflow.flow" ng-init="$stepIndex = workflow.flow.indexOf(data)">

        <div class="step_container">
            <div class="step_header">{{ data.name }}</div>
            <div class="step_content">

                <div class="task_container" ng-repeat="task in workflow.flow[$stepIndex].tasks">
                    <div ng-click="editTask(data, task)">
                        <div class="header">{{task.name}}</div>
                    </div>
                </div>

            </div>
        </div>

    </li>
</ul>

按照模板点击任务时,editTask()显示以下内容:

$scope.editTask = function(step, task) {
    $scope.step_index = $scope.workflow.flow.indexOf(step_index);
    $scope.task_index = $scope.workflow.flow[$scope.step_index].tasks.indexOf(task);

    //code that opens up a popup model
}

弹出模型如下:

<div ng-click="deleteTask()">Delete me</div>

因此,与我的拼接一起,我做一个console.log,以确保它选择正确的对象,如下所示:

$scope.deleteTask = function() {
    console.log($scope.workflow.flow[$scope.step_index].tasks[$scope.task_index]);
    $scope.workflow.flow[$scope.step_index].tasks.splice($scope.task_index, 1);
}

console.log确认我正在选择正确的任务,但如果我尝试删除最后一个任务,它将删除倒数第二个任务。如果我在此之后尝试删除最后一个任务,它将不会删除任何一个任务。

有谁知道我可能做错了什么?这没有任何意义,因为console.log实际上输出了我想要删除的内容,但是拼接不能正常工作。

0 个答案:

没有答案