2013-10-29 148 views
12
<div data-ng-controller="maincontrol"> 
    <div class="main"> 
    </div> 
    <button data-ng-click="submit()">click</button> 
</div> 

当我点击单击按钮时,我想在主div内追加一个div。我想为每个点击添加一个新的div(动态)。我也想知道是否存在子div。如何使用angularjs将div附加到一个div

我将做到这样在jquery的

$('main').append(); 

我将追加内通过的div();

但如何通过使用angular..js?

+0

你熟悉[angular.element ](http://docs.angularjs.org/api/angular.element)? – Beterraba

回答

21

使用的指令可能是一个解决方案,但它仍然太靠近jQuery的。当你玩Angular时,你必须有不同的想法。

jQuery是程序性的。

1-我发现的元素在DOM

2-我做一些东西

3-我添加,删除,在DOM

角修改元素是声明

  • 定义你的数据

  • 你定义数据的显示方式(使用NG重复,纳克级,等等。)

然后..

当你与你的数据的播放
  • ,视图自动更新。

如果你想使用的角度正确地播放你也许应该这样做:

模板:

<div class="main"> 
    <div ng-repeat="stuff in stuffs"><h1>{{stuff.title}}</h1> <p>{{stuff.content}}</p></div> 
</div> 

控制器:

function MainCtrl() { 
    $scope.stuffs = []; 
    $scope.submit = function() { 
     $scope.stuffs.push({title: 'Hello', content: 'world'}); 
    } 
} 
+1

它可能是一个旧的帖子,但**这一个不回答这个问题!** _问题是关于添加HTML元素,而不是项目列表!_ –

+0

我觉得这个答案是一个非常聪明的方式使用角度。谢啦 – SKYnine

12

通常最好为DOM操作创建指令(许多指令也有其他用途)。

在指令中您可以访问angular.element。如果jQuery在页面中的angular.js之前安装,这是一个jQuery对象,否则它是一个具有许多jQuery兼容方法的对象。

很简单的例子:

<button data-ng-click="submit()" my-directive>click</button> 
app.directive('myDirective',function(){ 
    return function(scope, element, attrs){ 
      element.click(function(){ 
       element.parent().find('.main').append('<div>Some text</div>') 
      }) 
     } 
}) 

阅读上的指示和angular.element