外部点击

时间:2016-09-16 05:21:49

标签: angularjs angular angularjs-directive angularjs-scope angularjs-ng-repeat

在ng-repeat中,我有一个项目列表,每个项目都有一个编辑和删除图标,如下所示,

第1项(编辑)(德尔) Item2(编辑)(Del) Item3(编辑)(Del) Item4(编辑)(Del)

当用户点击编辑时,我将内容可编辑属性更改为true,并隐藏编辑和删除选项。

但是当用户点击下一个编辑按钮或点击外面时,我需要显示再次编辑和删除选项。

2 个答案:

答案 0 :(得分:0)

使用ng-blur检测元素何时失去焦点

答案 1 :(得分:0)

只需存储“'项目”的状态即可。在项目模型中。我相信,你的项目只是一个json对象数组。

所以你可以这样做:

var vm = this;
vm.items = [...];

vm.onEdit = function(itemToEdit){

    vm.items.forEach(function(item){
       item.isEdit = item == itemToEdit;
    });

}

并且在一个观点中:

<div ng-repeat="item in $ctrl.items">
    <span>{{item.title}}</span>
    <span ng-click="$ctrl.onEdit(item)"
          ng-show="item.isEdit">Edit</span>
    <span>Delete</span>
</div>

关于click outside部分。您应该使用ng-blur,如@Leo提到的那样,或

$document.on('click', function(){
    vm.onEdit();
}); 

但是!它会在任何点击时触发,因此您应该在每个可编辑字段点击上附加e.preventDefault()。方法取决于情况。 ng-blur更好。