【问题标题】:AngularJS: How to replace #39; and amp; with apostrophe and blankAngularJS:如何替换 #39;和放大器;带撇号和空白
【发布时间】:2018-03-15 16:42:08
【问题描述】:

我收到了一些通过 RSS 新闻提要接收的数据,需要以 HTML 格式显示以用于 ionic 框架应用程序。有两个问题。我需要将'amp; 替换为'(撇号)和空格。

AngularJS:

        $scope.rssItems = [];
        var callbackI = 0;
        for(var i=0; i<$marketProvider[$scope.currentMarket].rss.length; i+=1){
          $webServicesFactory.get($marketProvider[$scope.currentMarket].rss[i], {Accept: "application/xml"}).then(
            function success(xmlData) {
              console.log("Home News: ", x2js.xml_str2json(xmlData));                 
              if (x2js.xml_str2json(xmlData) == null)
                  $ionicLoading.hide();


              $scope.rssItems = $scope.rssItems.concat(x2js.xml_str2json(xmlData).rss.channel.item);
//              $scope.rssItems = $scope.rssItems.replace("amp;",""); 

              callbackI+=1;
              if(callbackI == $marketProvider[$scope.currentMarket].rss.length){
                //console.info($scope.rssItems);
                $ionicLoading.hide();
              }
            },
            function error(error) {
              $ionicLoading.hide();
            }
          );

和html

    <div class="list">
      <h5 class="item item-positive item-divider" align="justify">Today's Headlines</h5>
      <span ng-if="rssItems.length==0">No news available.</span>
      <div class="item item-thumbnail-left" ng-bind-html="rssItems(item)" ng-repeat="item in rssItems | orderBy: -dateOrder" ng-click="openNews(item.link)">
        <img ng-src="{{item.enclosure._url || item.enclosure[0]._url || item.content._url || item.thumbnail._url || 'img/icon.png'}}">
        <h2>{{item.title.replace("amp;","") | htmlToPlaintext}}</h2>
        <p>{{item.pubDate | shortDate}}
        <p>{{item.description | htmlToPlaintext}}</p>
      </div>
  1. &lt;h2&gt;{{item.title.replace("amp;","") | htmlToPlaintext}}&lt;/h2&gt; 可以正确替换,但&lt;h2&gt;{{item.title.replace("&amp;#39;","'") | htmlToPlaintext}}&lt;/h2&gt; 无法替换为 aprotrophe。
  2. 我需要同时更换两个。

【问题讨论】:

标签: javascript html angularjs ionic-framework


【解决方案1】:

创建一个自定义过滤器,你会没事的:

> demo fiddle

查看

<div ng-controller="MyCtrl">
  Hello, {{ name  | replaceMe }}!
</div>

AngularJS 应用程序

var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function ($scope) {
    $scope.name = 'My &#39;sweetamp; &#39;sweetamp;';
});

myApp.filter('replaceMe', function () {
  return function (data) {
   return data.replace(new RegExp('amp;', 'g'), "")
              .replace(new RegExp('&#39;', 'g'), "'")
  }
})

【讨论】:

  • 抱歉反馈迟了。它正在部分工作。它只替换第一个''`,但不是全部。另外,我一次调用了 30 条新闻 rss,所以,如果发生这种情况,我需要全部替换
  • 使用return data.replace(/&amp;#39;/g, "'").replace(/amp;/g, "")怎么样?一样吗?
  • @lotteryman 是的,它是一样的。但我建议使用“RegExp()”函数创建正则表达式。
猜你喜欢
  • 1970-01-01
  • 2021-04-02
  • 2016-06-17
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多