AngularJS:使用相同的输入添加和编辑列表项

时间:2014-05-29 16:32:26

标签: javascript angularjs

我正在尝试编辑用于添加项目的相同输入字段中的列表项。

看看

http://jsbin.com/retadexu/188/edit

http://jsbin.com/retadexu/192/edit

第一个示例有效,但我必须将临时对象的.name属性分配给列表对象:

$scope.currentItem.name = $scope.newToDo.name;

我分配整个对象的第二个不起作用:

$scope.currentItem = $scope.newToDo;

因此,如果我不仅仅是“name”属性,我真的必须分配所有值吗?

1 个答案:

答案 0 :(得分:1)

不是跟踪对象的当前信息,而是跟踪该项目数组中的索引。

$scope.saveTodo = function(todo) {
  if ($scope.editMode) {
    $scope.currentItem = $scope.newToDo;
    $scope.todos[$scope.currentItemIndex] = $scope.newToDo;
    $scope.editMode = false;
  } else {
    $scope.todos.push($scope.newToDo);
  }
  $scope.newToDo = "";
};

$scope.editTodo = function(todo) {
  $scope.editMode = true;
  $scope.newToDo = angular.copy(todo);
  $scope.currentItemIndex = $scope.todos.indexOf(todo);
};

我还将按钮的文本移动到标记而不是控制器(个人偏好)

<button ng-click="saveTodo(todo)">{{editMode ? 'Edit' : 'Add'}}</button>

请参阅此plnkr