bit*_*wit 4 javascript angularjs
如何使用角度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>
Run Code Online (Sandbox Code Playgroud)
我想要完成的是将#overlay从一个地方移到另一个地方而不必在我标记为隐藏/未隐藏的每个项目中都有隐藏的副本.
如果这是jquery我可以做这样的事情:
$("#overlay").appendTo("#list li:first-child");
Run Code Online (Sandbox Code Playgroud)
是否有相同的方法来做角度?
pko*_*rce 11
由于您的澄清,我可以理解您有一个项目列表.您希望能够在此列表中选择一个项目(滑动但可能还有其他事件),然后为所选项目显示其他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>
Run Code Online (Sandbox Code Playgroud)
控制器中的代码所在的位置(仅显示其片段):
$scope.open = function(item){
if ($scope.isOpen(item)){
$scope.opened = undefined;
} else {
$scope.opened = item;
}
};
$scope.isOpen = function(item){
return $scope.opened === item;
};
Run Code Online (Sandbox Code Playgroud)
这是完整的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>
Run Code Online (Sandbox Code Playgroud)
这是jsFiddle:http://jsfiddle.net/pkozlowski_opensource/bBtH3/2/
| 归档时间: |
|
| 查看次数: |
9273 次 |
| 最近记录: |