【问题标题】:How do I append a div tag with a controller dynamically with angular?如何使用角度动态附加带有控制器的 div 标签?
【发布时间】:2013-11-03 08:35:03
【问题描述】:

我只是在学习 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 并且它可以工作,但我没有学到任何东西。

【问题讨论】:

    标签: javascript jquery html angularjs


    【解决方案1】:

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

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

    这篇文章对于任何从 jQuery 迁移到 Angular 的人来说都是必读的:How do I “think in AngularJS” if I have a jQuery background?

    您的演示的简单入门是:

    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>
    

    【讨论】:

    • 谢谢,这提供了我需要的确切帮助。您引用的帖子链接也有很大帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多