Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在AngularJs中的ng-bind中的JavaScript – 转义和>字符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用例,我们可以拥有’&’和’>’字符串中的字符例如。约翰约翰逊,价值>所以当服务器的响应被编码时,这个值就变成“value& amp; amp; 3′ 。

ng-bind不支持以下内容

值& gt 3将呈现为ngBind,而浏览器呈现与值相同的内容> 3。

http://jsfiddle.net/HKahG/2/

Ng:bind <div ng-bind="model"></div> 
Ng:bind-html <div ng-bind-html="model"></div>
<div> From Div: value &gt; </div>

为什么这个认的浏览器行为不存在于ng-bind?我不想使用Ng-bind-html(具有值<和它不是html)或ng-bind-unsafe-html的问题。 我的应用程序具有动态键值字段,它将显示在应用程序的不同部分。因此,使用单独的指令或装饰器将需要额外的开销来显示所有字符串字段,而不是使用NgBind。 问题: 1)有没有其他方式做同样的事情,而不使用附加的指令,还是处理编码数据的正确方法? 2)我可以覆盖ng-bind的行为吗?

编辑:请直接到答案底部获得最佳版本;答案是按时间顺序排列的;我经过几次迭代后得到最佳代码,最后。谢谢。

>我可以覆盖ng-bind的行为还是认装饰它?

是。我做了一个非常简单的实现,这使得ng-bind的行为就像你想要的那样。嗯…我不知道这是否是你想要的,但至少它是我所理解的你想要的。

工作小提琴:http://jsfiddle.net/93QQM/

这里是代码

@H_357_7@module.directive('ngBind',function() { return { compile: function(tElement,tAttrs) { tAttrs.ngBind = 'myBind(' + tAttrs.ngBind + ')'; return { pre: function(scopE) { scope.myBind = function(text) { return angular.element('<div>' + text + '</div>').text(); } } }; } } });

这不完全是“附加指令” – 这是“覆盖ng-bind的行为”的方式。它不添加新的指令,它只是扩展了现有的ngBind指令的行为。

在编译函数中,我们修改ng-bind属性的值,将其包装成一个函数调用有了这个,我们可以访问原始的模型值,并返修改的机会。

我们在预链接阶段通过范围使功能可用,因为如果我们在后置链接阶段执行此功能,则只有在原始ngBind指令从属性(将是空字符串,因为函数没有被找到)。

@H_394_1@myBind函数是简单而智能的:它创建一个元素,文本被使用 – 不变 – 作为元素体,只能通过文本函数立即检索 – 这将像“浏览器呈现”一样返回内容

这样,您可以照常使用NgBind,例如< divng-bind =“model.content”/>,但具有此修改的行为。

改良版

我们可以在每个预连接阶段将myBind函数附加到每个应用了ngBind的范围,而不必将它附加到$ rootScope一次,使其立即可用于所有范围。

新工作小提琴:http://jsfiddle.net/EUqP9/

代码

@H_357_7@module.directive('ngBind',['$rootScope',function($rootScopE) { $rootScope.myBind = function(text) { return angular.element('<div>' + text + '</div>').text(); }; return { compile: function(tElement,tAttrs) { tAttrs.ngBind = 'myBind(' + tAttrs.ngBind + ')'; } }; }]);

比以前的版本更干净!当然,您可以将myBind函数名称更改为您想要的任何其他名称功能的“成本”是:将这个简单的功能添加到根范围 – 由您决定是否值得价格。

一个版本

受Chemiv的回答影响…为什么不从任何范围中删除功能,并使其成为一个过滤器?它也有效。

一个新的工作小提琴:http://jsfiddle.net/hQJaZ/

和新的代码

@H_357_7@module.filter('decode',function() { return function(text) { return angular.element('<div>' + text + '</div>').text(); }; }).directive('ngBind',tAttrs) { tAttrs.ngBind += '|decode'; } }; });

现在,您可以从菜单中选择三个选项。

大佬总结

以上是大佬教程为你收集整理的在AngularJs中的ng-bind中的JavaScript – 转义和>字符全部内容,希望文章能够帮你解决在AngularJs中的ng-bind中的JavaScript – 转义和>字符所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。