查看和编辑对象

Angularjs - view and edit an object

本文关键字:对象 编辑      更新时间:2023-09-26

我想有一个对象的条目列表。如果我点击列表中的一个条目,我希望看到该对象的详细信息和列表右侧区域的编辑按钮。如果我点击该按钮,详细信息将消失,并出现一个用于编辑对象的表单。

<table class="table table-striped">
    <tr 
        ng-repeat="object in objects" 
        ng-click="select(object.id)"
    >
        <td>{{object.name}}</td>
    </tr>
</table>
<button ng-click="edit(selectedObject.id)">Edit</button>
<div class="view">
    Name: {{selectedObject.name}}
</div>
<form>
    <label>Name</label>
    <input ng-model="object.name">
</form>

controller.js

myModule.controller('MyController', function($scope, MyService) {
    $scope.objects = MyService.getObjects();
    $scope.select = function(id) {
        $scope.selectedObject = angular.copy(MyService.getObject(id));  
    };
    $scope.edit = function(id) {
        ...
    };
});

在编辑函数中,我可以使用selectedObject,但也许在将来我也想直接编辑对象而不选择它之前。所以首先我可以在select函数中做同样的事情,然后我将调用服务两次来接收相同的对象…

我也不知道如何处理viewmode和editmode之间的切换。

提前感谢!

你应该给细节视图和编辑表单各自的控制器,这样它们就可以被分开了。

还强烈建议使用https://github.com/angular-ui/ui-router嵌套视图和多/命名视图来管理您的控制器。

然后您可以使列表视图的父和添加其他2子视图与自己的url,如/item/:id/view/item/:id/edit,参见$stateParams从url获取值。

我不是100%确定你的问题,但你可以显示/隐藏输入

$scope.edit = function () {
        $scope.editmode = true
};

<div class="view" ng-show="!editMode">    
    Name: {{selectedObject.name}}
</div>

ng-show="editmode"     
输入

上的

或者可以用

ng-readonly="!editmode"上的输入(然后您将不需要另一个div来显示名称)

如果你计划显示的对象有一个表,请考虑ngGrid,它允许在网格内部编辑