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