gpt4 book ai didi

angularjs - 用 Angular 突出显示单词

转载 作者:行者123 更新时间:2023-12-03 00:02:21 24 4
gpt4 key购买 nike

我试图允许用户单击特定 div 中的单词,并且该单词将突出显示。我很新,并且知道我所做的与工作并不接近,但我看了很多视频并阅读了很多文章并且被困住了。即使我没有得到具体要做什么的答案,任何对我下一步的指导都会非常有帮助。

我想我需要一个指令来获取 div,分割文本并在每个单词周围添加一个跨度。该 div 需要一个点击事件来突出显示该单词。我经历了很多次迭代,但在每一点上我都遇到了阻碍。

我在页面上有很多其他 Angular 内置指令,所以我知道我的应用程序总体设置正确,并且我将该指令包含在应用程序模块中。

<div my-prepare-text ng-bind-html="item.text | unsafe"></div>

angular.module('MyDirectives', [])
.directive('myPrepareText', function() {
return {
restrict: 'A',
link: function(scope, element) {
var words = element.text().split(' ');
var text = words.join("</span> <span my-highlight ng-click='highlight()'>");
element.html("<p><span my-highlight ng-click='highlight()'>" + text + "</span></p>");
};
};
})

最佳答案

您可以创建一个指令,将单词作为属性,然后使用 ng-repeat 创建跨度。

我做了一个basic example显示此行为。

angular.module('MyDirectives', [])
.directive('myPrepareText', function() {
return {
restrict: 'A',
template: '<div><span ng-repeat="word in words" class="single-word" ng-click="highlight($event)">{{word}}</span></div>',
link: function($scope, $element) {
$scope.words = $element.attr('words').split(' ');
$scope.highlight = function(event) {
angular.element(event.target).toggleClass('highlight');
};
}
};
});
.highlight {
background-color: yellow;
}
.single-word::after {
content: ' ';
background-color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<!DOCTYPE html>
<html>

<head>
</head>

<body ng-app="MyDirectives">
<div words="so many words to highlight" my-prepare-text></div>
</body>

</html>

关于angularjs - 用 Angular 突出显示单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32701219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com