Javascript 通过无模板的angular指令进行字符串操作

Javascript 通过无模板的angular指令进行字符串操作,javascript,angularjs,Javascript,Angularjs,我试图获取一个纯文本tweet列表(例如,“@Stackoverflow is cool#hashtag”),通过ng repeat,然后应用自定义指令(或过滤器)将字符串更改为类似“is cool”的内容 所以,我尝试了一个过滤器,它工作得很好,只是它不能很好地处理原始html,我读到这是一个指令的工作,无论如何 因此,过滤器(称为like:{{tweet | parseTweetTags}}): 现在,我想我应该把它变成一个指令,从ng repeat 我的观点是这样的,但我认为这还远远不够:

我试图获取一个纯文本tweet列表(例如,“@Stackoverflow is cool#hashtag”),通过
ng repeat
,然后应用自定义指令(或过滤器)将字符串更改为类似“is cool”的内容

所以,我尝试了一个过滤器,它工作得很好,只是它不能很好地处理原始html,我读到这是一个指令的工作,无论如何

因此,过滤器(称为like:
{{tweet | parseTweetTags}}
):

现在,我想我应该把它变成一个指令,从
ng repeat

我的观点是这样的,但我认为这还远远不够:

(function (app) {
    app.directive('parseTweetTags', function () {
        function link(scope, element, attrs) {
            var tweet;
            function parseTweet() {
                element.text(tweet.parseURL().parseUsername().parseHashtag());
            }

            scope.$watch(attrs.tweet, function (value) {
                tweet = value;
            });
        }

        return {
            link: link
        }
    });
}(angular.module('twitterApp')));
HTML应该是这样的,没有
ng模型

<div ng-controller="tweetsController">
    <div ng-repeat="tweet in tweets">
        <div parse-tweet-tags="tweet.text"></div>
    </div>
</div>

tl;dr


我如何简单地传递一个字符串,在一个指令中对其执行一个简单的操作,然后返回它,而无需模板

,只需稍微修改一下过滤器和它绑定到HTML的方式,我就可以实现这一点

首先,更改过滤器,传入$sce并调用$sce.trustAsHtml()

以及对html的更改:

<div ng-controller="tweetsController">
    <div ng-repeat="tweet in tweets">
        <div ng-bind-html="tweet.text | parseTweetTags"></div>
    </div>
</div>


听起来像是一个过滤器可能是一种方法。。。可能值得一看源代码,答案是使用过滤器,但我想做的不仅仅是链接。我需要修改上面显示的过滤器以获取
$sce
,然后返回语句是
return$sce.trustAsHtml(text.parseUrl().parseUsername().parseHashtag())和html是
您从未在指令中调用
parseTweet()
(function (app) {
    app.filter("parseTweetTags", function ($sce) {
        return function (text) {
            return $sce.trustAsHtml(text.parseURL().parseUsername().parseHashtag());
        }
    });
}(angular.module('twitterApp')));
<div ng-controller="tweetsController">
    <div ng-repeat="tweet in tweets">
        <div ng-bind-html="tweet.text | parseTweetTags"></div>
    </div>
</div>