gpt4 book ai didi

javascript - 如何使用 angular.js 在 DOM 周围移动 View ?

转载 作者:搜寻专家 更新时间:2023-11-01 04:49:09 27 4
gpt4 key购买 nike

如何使用 angular js 将元素移动到 DOM 中的不同位置?

我有一个这样的元素列表

<ul id="list" ng-controller="ListController">
<li ng-controller="ItemController"><div>content</div></li>
<li ng-controller="ItemController"><div>content</div></li>
<li ng-controller="ItemController"><div>content</div></li>
<li ng-controller="ItemController">
<div>content</div>
<div id="overlay"></div>
</li>
</ul>

我想要完成的是将#overlay 在列表中从一个地方移动到另一个地方,而不必在我标记为隐藏/未隐藏的每个项目中都有一个隐藏的重复项。

如果这是 jquery 我可以做这样的事情:

$("#overlay").appendTo("#list li:first-child");

是否有等效的方法来以 Angular 执行此操作?

最佳答案

感谢您的澄清,我了解到您已经获得了一份项目 list 。您希望能够在此列表中选择一个项目(滑动但也可能是其他事件),然后为所选项目显示一个额外的 DOM 元素 (div)。如果选择了另一个项目,则应该取消选择它 - 这样只有一个项目应该显示一个额外的 div。

如果上面的理解是正确的,那么你可以使用简单的 ng-repeat 和 ng-show 指令来解决这个问题,如下所示:

<ul ng-controller="ListController">
<li ng-repeat="item in items">
<div ng-click="open(item)">{{item.content}}</div>
<div ng-show="isOpen(item)">overlay: tweet, share, pin</div>
</li>
</ul>

Controller 中的代码所在的位置(仅显示其片段):

$scope.open = function(item){
if ($scope.isOpen(item)){
$scope.opened = undefined;
} else {
$scope.opened = item;
}
};

$scope.isOpen = function(item){
return $scope.opened === item;
};

这是完整的 jsFiddle:http://jsfiddle.net/pkozlowski_opensource/65Cxv/7/

如果您担心 DOM 元素过多,您可以使用 ng-switch 指令实现同样的效果:

<ul ng-controller="ListController">
<li ng-repeat="item in items">
<div ng-click="open(item)">{{item.content}}</div>
<ng-switch on="isOpen(item)">
<div ng-switch-when="true">overlay: tweet, share, pin</div>
</ng-switch>
</li>
</ul>

这是 jsFiddle:http://jsfiddle.net/pkozlowski_opensource/bBtH3/2/

关于javascript - 如何使用 angular.js 在 DOM 周围移动 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12428570/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com