当前位置: 首页 > 面试题库 >

AngularJS指令替换文本

裘丰
2023-03-14
问题内容

我将如何在angularjs中创建一个指令,例如采用以下元素:

<div>Example text http://example.com</div>

并将其转换为此

<div>Example text <a href="http://example.com">http://example.com</a></div>

我已经编写了用于自动链接函数中的文本并返回html的功能(让我们将函数称为“ autoLink”),但是我对指令不满意。

我还想向元素添加属性,以将对象传递给指令。例如

<div linkprops="link.props" >Example text http://example.com</div>

其中link.props是{a:’bla bla’,b:’waa waa’}之类的对象,该对象将作为第二个参数传递给autoLink函数(第一个是文本)。


问题答案:

有两种方法:

指示

app.directive('parseUrl', function () {
    var urlPattern = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?/gi;
    return {
        restrict: 'A',
        require: 'ngModel',
        replace: true,
        scope: {
            props: '=parseUrl',
            ngModel: '=ngModel'
        },
        link: function compile(scope, element, attrs, controller) {
            scope.$watch('ngModel', function (value) {
                var html = value.replace(urlPattern, '<a target="' + scope.props.target + '" href="$&">$&</a>') + " | " + scope.props.otherProp;
                element.html(html);
            });
        }
    };
});

HTML:

<p parse-url="props" ng-model="text"></p>

过滤

app.filter('parseUrlFilter', function () {
    var urlPattern = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?/gi;
    return function (text, target, otherProp) {
        return text.replace(urlPattern, '<a target="' + target + '" href="$&">$&</a>') + " | " + otherProp;
    };
});

HTML:

<p ng-bind-html-unsafe="text | parseUrlFilter:'_blank':'otherProperty'"></p>

注意:'otherProperty'举例来说,如果您要将更多属性传递到过滤器中,则为。

jsFiddle

更新: 改进的替换算法。



 类似资料:
  • 主要内容:AngularJS 指令,AngularJS 实例,数据绑定,AngularJS 实例,重复 HTML 元素,AngularJS 实例,AngularJS 实例,ng-app 指令,ng-init 指令,ng-model 指令,ng-repeat 指令,创建自定义的指令,AngularJS 实例,限制使用AngularJS 通过被称为 指令 的新属性来扩展 HTML。 AngularJS 通过内置的指令来为应用添加功能。 AngularJS 允许你自定义指令。 AngularJS 指令

  • 问题内容: 为什么还是没有在下面的代码产生任何影响? 当replace = false时为什么不显示“某些现有内容”? 或者更谦虚地讲,您能否解释指令中的功能以及如何使用它? 例 JS /角度: HTML: 在此处查看Plunker: http://plnkr.co/edit/4ywZGwfsKHLAoGL38vvW?p=preview 问题答案: 拥有后,您将获得以下DOM: 而随着你得到这个:

  • 本文向大家介绍AngularJS内置指令,包括了AngularJS内置指令的使用技巧和注意事项,需要的朋友参考一下 指令,我将其理解为AngularJS操作HTML element的一种途径。 由于学习AngularJS的第一步就是写内置指令ng-app以指出该节点是应用的根节点,所以指令早已不陌生。 这篇日志简单记录了一些内置指令,先使用起来,再谈一些有趣的东西。 内置指令 所有的内置指令的前缀

  • 问题内容: 有关此问题的改进解决方案,请参阅问题底部 我已经尝试了一段时间,以获取有关pagedown工作的指令。这是stackoverflow使用的完全相同的编辑器。Stackoverflow使此代码在此处可用: https://code.google.com/p/pagedown/ 互联网上有一些版本,但都无法正常运行。我需要的是一个将与所有编辑器按钮一起出现的控件,就像在内联编码以及作为ng

  • 问题内容: 我想通过标签上的参数将调用发送回指令,然后在指令内部适当时调用该方法。例如,当单击按钮时,调用父控制器上的方法。 我有一个简单的问题,它无法正常工作 html文件: javascript文件: 问题答案: 棘手的棘手角度,在HTML中声明参数时,需要使用蛇形大小写而不是驼峰形匹配。 作品: 不起作用:

  • 本文向大家介绍AngularJS ng-mousedown 指令,包括了AngularJS ng-mousedown 指令的使用技巧和注意事项,需要的朋友参考一下 AngularJS ng-mousedown 指令 AngularJS 实例 在鼠标按下时执行表达式: 定义和用法 ng-mousedown 指令用于告诉 AngularJS 鼠标在指定的 HTML 元素上按下时要执行的操作。 ng-m