tho*_*mas 4 javascript jquery angularjs angular-ui
我试图使用angular添加一些搜索结果的突出显示.我发现UI.Utils中的Highlight功能给出了我想要的结果.但这些例子都在使用ng-bind-html-unsafe.有没有办法使用这种模板方法?
<div ng-app>
<div ng-controller="searchController">
<input ng-model="query"/>
<div class="t">
<div class="tr" ng-repeat="person in result">
<div class="td">{{person.FirstName | highlight}}</div>
<div class="td">{{person.LastName | highlight}}</div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
点击这里查看jsfiddle上的代码:http://jsfiddle.net/vs7Dm/4/
小智 5
要做到这一点,您必须完成几个步骤才能使用ui-angular的高亮滤镜
您需要将ngSanitize作为依赖项.见下文;
var app = angular.module('app',['ngSanitize']);
Run Code Online (Sandbox Code Playgroud)
将其添加到您的HTML中
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular-sanitize.min.js"/>
Run Code Online (Sandbox Code Playgroud)
像这样将高亮过滤器复制到您的应用程序
app.filter('highlight', function () {
return function (text, search, caseSensitive) {
if (text && (search || angular.isNumber(search))) {
text = text.toString();
search = search.toString();
if (caseSensitive) {
return text.split(search).join('<span class="ui-match">' + search + '</span>');
} else {
return text.replace(new RegExp(search, 'gi'), '<span class="ui-match">$&</span>');
}
} else {
return text;
}
};
});
Run Code Online (Sandbox Code Playgroud)
那么你所做的就是你可搜索的结果部分:
<input type="text" placeholder="Search..." ng-model="searchText" />
<div ng-repeat="address in addresses | filter:searchText">
<p ng-bind-html="address.title | highlight:searchText"></p>
<p ng-bind-html="address.address_1 | highlight:searchText"></p>
<p ng-bind-html="address.address_2 | highlight:searchText"></p>
<p ng-bind-html="address.address_3 | highlight:searchText"></p>
</div>
Run Code Online (Sandbox Code Playgroud)
请注意,在ng-repeat中使用ng-bind-html而不是ui-angular所暗示的ng-bind-html-unsafe.-html-unsafe已从核心中删除,需要注入您的应用程序.
这是我使用AngularJS v1.3.0运行它所需的一切.
如果您对此方法有任何疑问,请与我们联系.
| 归档时间: |
|
| 查看次数: |
3399 次 |
| 最近记录: |