angularjs - 点击 ng 时生成动态 html

标签 angularjs click

我想插入包含 ng-bind 和 ng-click 指令的动态 html 元素。我想在

中插入新的 html 元素

HTML 看起来像这样

     <body data-ng-controller="controller">
         <div id="toolbox">
             <label>Page Width</label>
             <input type="text" data-ng-model="pageWidth" />
             <input type="button" value="H1" data-ng-click="createH1()" />
         </div>
         <div id="editor">
             <div data-ng-style="{width:pageWidth + 'px'}" data-ng-page>

             </div>

         </div>
    </body>

Controller >

    app.controller('controller', ['$scope', function ($scope) {
        $scope.createH1 = function () {
            document.getElementById("page").innerHTML = document.getElementById("page").innerHTML + ("<div class='h1' data-ng-h1 draggable></div>");
        };
    }]);

上面的 Controller 正在插入 html 元素,但新 html 元素的指令不起作用。

但是我开始知道,除非我们 $compile template/html ,否则它们将无法工作。
如果我使用 app.directive( ngPage, ..) 添加动态 html,它会在应用程序启动时插入。但我只想插入按钮 ng-click。

我是 Angular JS 的新手,有点困惑,请帮我解决这个问题。 提前致谢。

最佳答案

我总是更喜欢通过指令进行 DOM 操作。所以这里的代码如下所示

HTML

  <body ng-controller="MainCtrl as vm">
    <button add-html>click me</button>
    <div id="page">
      This will be replaced by text
    </div>
  </body>

代码

app.directive('addHtml', function($compile){
  return {
    restrict: 'AE',
    link: function(scope, element, attrs){
      var html = `<div class='h1' data-ng-h1 draggable>Test</div>`,
      compiledElement = $compile(html)(scope);

      element.on('click', function(event){
        var pageElement = angular.element(document.getElementById("page"));
        pageElement.empty()
        pageElement.append(compiledElement);
      })
    }
  }
});

Plunkr这里

关于angularjs - 点击 ng 时生成动态 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29094174/

相关文章:

javascript - 正则表达式性能问题

javascript - 鼠标移动和 onclick 事件

jquery - 动态添加的按钮(使用 jQuery)必须单击两次才能触发已绑定(bind)到按钮的单击事件

CSS:标签和链接,两者都应该有效

javascript - DeviantArt 的脚本负责发送个人资料评论

javascript - AngularJS 中的日期字段

javascript - 输入键上的AngularJS textarea换行符

javascript - 如何在angularjs中防止/取消绑定(bind)以前的$watch

javascript - iPad 上的 JQuery mobile : vclick triggers a scroll to the top of the page, 然后执行单击

javascript - 绑定(bind)到 AngularJS 中的函数