Angularjs 如何使作用域函数可用于已编译的模板

Angularjs 如何使作用域函数可用于已编译的模板,angularjs,angular-ui-bootstrap,angular-material,Angularjs,Angular Ui Bootstrap,Angular Material,我正在尝试编写一个服务,它将编译指令的HTML并将其附加到body元素。当指令正在处理文本时,函数不会被处理 这是一个更简单的版本,我无法使用ng click指令并从控制器编译它。谁能告诉我如何才能做到这一点。我的目标是创建一个非常基本的指令,其功能类似于angular ui引导中的modals或angular material中的dialog服务 angular .module('应用程序',[]) .controller('ctrl',ctrl'); 函数ctrl($scope$compi

我正在尝试编写一个服务,它将编译指令的HTML并将其附加到body元素。当指令正在处理文本时,函数不会被处理

这是一个更简单的版本,我无法使用
ng click
指令并从控制器编译它。谁能告诉我如何才能做到这一点。我的目标是创建一个非常基本的指令,其功能类似于angular ui引导中的modals或angular material中的dialog服务

angular
.module('应用程序',[])
.controller('ctrl',ctrl');
函数ctrl($scope$compile){
var html='',
新闻范围=$scope.$new(true),
newScope1=$scope.$new(true);
$scope.text='来自控制器';
$scope.fun=函数(){
警报(“来自控制器”);
};
newScope.text='来自具有新作用域的控制器';
newScope.fun=函数(){
警报(“来自具有新范围的控制器”);
};
newScope1.text='来自具有新作用域1'的控制器';
newScope1.fun=函数(){
警报(“来自具有新作用域1的控制器”);
};
html=$compile('{{text}}')($scope);
angular.element('body').append(html);
html=$compile({{text}}')(新闻范围);
angular.element('body').append(html);
$compile({{text}')(新闻范围1,函数(clonedElement,作用域){
日志(clonedElement,scope);
angular.element('body').append(clonedElement);
});
}

你好,普朗克!

你做得很对,只需调用方法,使用
ng click=“fun()”
而不是
ng click=“fun”
(唯一缺少的东西)

html=$compile({{text}}')(新闻镜);

为什么要编译指令并将其附加到正文中,而不是使用像
这样的标记?当您想要打开对话框或其他东西时,可能是在返回ajax响应之后。这种方法似乎更简洁,而不是让指令一直坐在页面上等待ngIf/ngShow,特别是在可能有大量ajax或类似对话框触发工作的情况下。
html = $compile('<button ng-click="fun()">{{text}}</button>')(newScope);