AngularJS:如何在;模板";使用转换时的函数?
要在AngularJS:如何在;模板";使用转换时的函数?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,要在模板函数中获取指令的原始HTML,可以执行以下操作: HTML: 使用转换时,是否有办法在模板函数中获取原始HTML 最终目标是向用户呈现原始HTML: angular.module('App', []).directive('myDirective', function() { return { transclude: true, template: function(element) { var originalHTML = "How do I get i
模板
函数中获取指令的原始HTML,可以执行以下操作:
HTML:
使用转换时,是否有办法在模板
函数中获取原始HTML
最终目标是向用户呈现原始HTML:
angular.module('App', []).directive('myDirective', function() {
return {
transclude: true,
template: function(element) {
var originalHTML = "How do I get it?";
return '<div>' +
' <pre>' +
escapeHtml(originalHTML) + // This is the original HTML
' </pre>' +
' <div ng-transclude></div>' + // and this is how it looks like
'</div>';
}
};
});
angular.module('App',[]).directive('myDirective',function(){
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
返回{
是的,
模板:函数(元素){
var originalHTML=“我如何获得它?”;
返回“”+
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
' ' +
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
escapeHtml(originalHTML)+//这是原始HTML
' ' +
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
''+//这就是它的样子
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
'';
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
}
};
});
您必须在模板中定义原始HTML代码的插入位置 例如:
.directive('myDirective', function(origContentService) {
return {
priority:100,
transclude: true,
template: '<div>Template</div>',
link:function(scope, elm){
//get prop and get content
console.log(origContentService.getContent(elm.idx));
}
};
}).directive('capture', function(origContentService){
return {
restrict:'A',
priority:200, //<-- This must be higher
compile:function(elm){
//Save id and set prop
elm.idx = origContentService.setContent(elm.html());
}
}
}).service('origContentService', function(){
var contents = {};
var idx = 0;
this.getContent= function(idx){
return contents[idx];
}
this.setContent = function(content){
contents[++idx] = content;
return idx;
}
this.cleanup = function(){
contents = null;
}
});
angular.module('App',[]).directive('myDirective',function(){
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
返回{
模板:“模板”;
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
}
});
这将把原始HTML放在
模板之后
我可以想到的一种方法是使用另一个指令,该指令将通过标识符将内容保存到可访问的服务中。因此,这意味着您需要添加另一个用于此目的的指令。执行捕获的指令的优先级必须高于使用它的任何其他指令
例如:-
<div my-directive capture>
<input type="text">
</div>
或者将内容本身保存为元素上的数据(或属性)。因此,当元素被破坏时,它的属性也会被破坏
.directive('myDirective',function(){
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
返回{
优先:100,
是的,
模板:“模板”,
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
链接:功能(范围,elm){
日志(elm.data('origContent');
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
}
};
}).directive('capture',function(){
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
返回{
限制:'A',
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
优先:200,
编译:函数(elm){
data('origContent',elm.html());
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});
}
}
});
你在这里的最终目标是什么?也许有解决办法?@MichalCharemza我想向用户展示原始HTML。我更新了这个问题。是的,两个指令可以工作,但我想知道是否有可能用一个指令实现同样的效果。另见。@MishaMoroshko我不想污染另一个答案。在这里,它支持同一父作用域上的多个指令,可能更简洁,并且没有多个按钮。如果你觉得这样更好,我可以发布这个。非常感谢你的努力!!我觉得好多了。请把这个寄出去。@MishaMoroshko不客气。我已经贴了,看一看。干杯
angular.module('App', []).directive('myDirective', function() {
return {
template: '<div>Template</div><ng-transclude></ng-transclude>';
}
});