因此,我基本上希望能够触发一个事件,然后进行伪指令编译并将其自身插入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