我正在尝试编辑用于添加项目的相同输入字段中的列表项。
看看
http://jsbin.com/retadexu/188/edit
和
http://jsbin.com/retadexu/192/edit
第一个示例有效,但我必须将临时对象的.name属性分配给列表对象:
$scope.currentItem.name = $scope.newToDo.name;
我分配整个对象的第二个不起作用:
$scope.currentItem = $scope.newToDo;
因此,如果我不仅仅是“name”属性,我真的必须分配所有值吗?
答案 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