繁体   English   中英

如何使用角度动态地附加带控制器的div标签?

[英]How do I append a div tag with a controller dynamically with angular?

我只是在学习angularjs并且有一些工作将jQuery和angularjs混合在一起。 我知道这不是正确的方法,但我不知道Angularjs正确的做法是什么。

在HTML中我有这个标签,它只是一个将div标签动态添加到页面上的按钮。

<div ng-controller="pgCtrl">
    <button id="new-btn" ng-click="newDiv()">Gimme a div!</button>
</div>

在javascript我有这个:

app.controller('pgCtrl', function($scope){
    $scope.newDiv = function(){
        // Load an element that uses controller anotherCtrl
        $('<div class="blah" ng-controller="anotherCtrl">' +
            '<button id="another-btn" ng-click="stuff()">-</button>{{stuff}}' +
            '</div>').appendTo('body');
        angular.bootstrap($('.blah'), ['app']);
    };
});

我知道这不是使用Angularjs做到这一点的“正确”方法。 我混合使用各种基本的jQuery并且它可以工作,但是我没有学到任何东西。

使用angular总是考虑首先更新范围对象(Model)。 在标记(视图)中,您有许多ng内置指令来处理处理范围对象。

事实上,当你从angular开始时,几乎最好不要在页面中包含jQuery。 它有助于迫使您远离jQuery DOM操作方法并开始思考模型/控制器/视图

这篇文章是任何人从jQuery迁移到angular的必读内容: 如果我有jQuery背景,我如何“在AngularJS中思考”?

一个简单的演示启动器将是:

app.controller('pgCtrl', function($scope){
      $scope.items=[];
      $scope.newDiv=function(){
           $scope.items.push( {stuff: 'Some stuff text'}
      }
})

然后在视图中将使用ng-repeat这样您就可以根据需要多次按住按钮并继续添加stuff

<div ng-repeat="item in items" >
        <div class="blah" ng-controller="anotherCtrl">
            <button id="another-btn" ng-click="stuff()">-</button>{{item.stuff}}
         </div>

</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM