angularjs - 以编程方式插入指令 AngularJS

标签 angularjs angularjs-directive

所以我基本上希望能够触发一个事件,然后编译一个指令并将其自身插入到 DOM 中的某个位置。 目前我有这样的东西

//controller
  angular.module('app').controller('MainCtrl', function ($scope, $compile) {

    $scope.$on('insertItem',function(ev,attrs){
      var el = $compile( "<chart></chart>" )( $scope );
      $scope.insertHere = el;
    });

  });


// directive
 angular.module('app')
  .directive('chart', function () {
    return {
      template: '<div>My chart</div>',
      restrict: 'E',
      link: function postLink(scope, element, attrs) {
        element.text('this is a chart');
      }
    };
  });

我能够看到对象“el”以及我需要的所有内容,但我无法将其插入到 DOM 中... 有什么线索吗?

最佳答案

您必须首先创建 dom 元素,然后编译它并将其添加到文档中。像这样的事情:

$scope.$on('insertItem',function(ev,attrs){
  var chart = angular.element(document.createElement('chart'));
  var el = $compile( chart )( $scope );

  //where do you want to place the new element?
  angular.element(document.body).append(chart);

  $scope.insertHere = el;
};

我在这里创建了一个简单的示例:http://plnkr.co/edit/n7SZpyeQ9nbjVSYA7ibB?p=preview

关于angularjs - 以编程方式插入指令 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16656735/

相关文章:

angularjs - 错误: [$injector:unpr] Unknown provider: $routeProvider

javascript - 在用户移出该字段之前,正式字段不会显示验证

javascript - Charts Js 和 Angular JS 不工作,不显示图表

javascript - 在指令内附加 html 和范围值

angularjs - 与指令的两种方式数据绑定(bind)不起作用

javascript - 在 angular.js 应用程序中使用 jQuery 插件 (flipclock)

javascript - ng-options 指令不起作用,无法在 angularjs 库中找到它

angularjs - 存储多个 Firebase 引用

javascript - 如何使用选择列表从指令更新父级上的模型

javascript - 查找嵌入指令的子元素但排除其自身的嵌套指令子元素