Angularjs 可以将指令$compiler注入到服务中吗?
我正在尝试将a输出为,以便将放置在代码显示窗口中。我感兴趣的是实际的代码,而不是浏览器呈现的版本,因为我正在向高级用户显示代码。因此,我希望能够将一个指令函数注入到服务或页面控制器中 这将类似于使用,或者甚至,但是对于特定的指令。我想我已经定义了这个指令,我很有可能以某种方式访问html生成函数。我知道您可以在指令定义中定义控制器,但我正在寻找一种在服务或页面控制器中使用的解决方案 例如,我在一个模块中定义了一个指令Angularjs 可以将指令$compiler注入到服务中吗?,angularjs,angularjs-directive,angularjs-service,angularjs-controller,angularjs-injector,Angularjs,Angularjs Directive,Angularjs Service,Angularjs Controller,Angularjs Injector,我正在尝试将a输出为,以便将放置在代码显示窗口中。我感兴趣的是实际的代码,而不是浏览器呈现的版本,因为我正在向高级用户显示代码。因此,我希望能够将一个指令函数注入到服务或页面控制器中 这将类似于使用,或者甚至,但是对于特定的指令。我想我已经定义了这个指令,我很有可能以某种方式访问html生成函数。我知道您可以在指令定义中定义控制器,但我正在寻找一种在服务或页面控制器中使用的解决方案 例如,我在一个模块中定义了一个指令 mod.directive("superThing", function()
mod.directive("superThing", function() {
return {
templateUrl: "/superThing.html",
scope: {
variableA: "="
}
};
});
离职:
mod.service("applicationService", [ "$rootScope", "superThing",
function ($rootScope, superThing) {
$rootScope.result = superThing($rootScope);
}
]);
(我知道像这样使用$rootScope很奇怪,但我只是想给出一个简短的成功例子。)
页面模板示例:
<fieldset>
<legend>Preview:</legend>
<div data-super-thing data-variable-a="false">
</div>
</fieldset>
<fieldset>
<legend>Code output:</legend>
<textarea rows="4" cols="50" data-code-mirror="{{result}}">
</textarea>
</fieldset>
预览:
代码输出:
是否有办法将指令的内部$compiled版本或类似版本注入服务?根据您的需要,我可以提供4个选项:
- 使用服务手动创建指令
- 创建一个指令,该指令将在变量中记录html
- 创建一个公共指令,该指令将通过事件
报告其内容html进行报告$emit
- 创建一个通用指令,将html记录在变量中(我认为这是首选解决方案。)
我的指令{{selfHTML}的Html
外接程序数组
{{a}
{{htmlFromNgRepeat}}
请给出一个您希望作为输出显示的示例,好吗?@zhekaus-我添加了一个页面模板来显示输出的显示方式,但是如果您希望我也包括最终输出,我也可以这样做。