2017-07-10 5 views
1

JSONからHTMLコードを含む文字列を表示しています。 2番目のオブジェクトの '名前'プロパティを確認してください。「ng-bind-html-unsafe」に何も表示されない

しかし、「ng-bind-html-unsafe」を使用すると、何も表示されません。

私はngSanitizeも使用しました。

私のコードに何が間違っているのか理解してもらえますか?

angular.module('myApp', ['ngSanitize']).controller('myCtrl', ['$scope', '$sce', function($scope, $sce){ 
 
    $scope.card = [{ 
 
    Name: "New Year Celebration", 
 
    Description: "", 
 
    Venue: "", 
 
    StartDate: "Fri Dec 29 2017 23:30:00 GMT+0530", 
 
    EndDate: "Sat Dec 30 2017 00:30:00 GMT+0530", 
 
    EventID: "1" 
 
    }, { 
 
    Name: "<P>25th Anniversary Celebration</P>", 
 
    Description: "25th Anniversary Celebration of organization", 
 
    Venue: "Auditorium", 
 
    StartDate: "Wed May 31 2017 17:30:00 GMT+0530", 
 
    EndDate: "Wed May 31 2017 20:30:00 GMT+0530", 
 
    EventID: "2" 
 
    }, { 
 
    Name: "Annual Day", 
 
    Description: "", 
 
    Venue: "", 
 
    StartDate: "Fri Oct 13 2017 14:30:00 GMT+0530", 
 
    EndDate: "Fri Oct 13 2017 17:30:00 GMT+0530", 
 
    EventID: "3" 
 
    }]; 
 
    
 
    $scope.trustAsHtml = function(html) { 
 
\t return $sce.trustAsHtml(html); 
 
    } 
 
    $scope.add = function(eventObj) { 
 
    $scope.eventID= this.eventObj.EventID; 
 
    $scope.startDate= this.eventObj.StartDate; 
 
    $scope.endDate= this.eventObj.EndDate; 
 
    $scope.venue= this.eventObj.Venue; 
 
    $scope.subject= this.eventObj.Name; 
 
    $scope.result= this.eventObj.Description; 
 
    //console.log(this); 
 
    $scope.icsMSG = "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nDTSTART:" + $scope.startDate +"\nDTEND:" + $scope.endDate +"\nLOCATION:" + $scope.venue + "\nSUMMARY:" + $scope.subject + "\nDESCRIPTION:"+ $scope.result +"\nEND:VEVENT\nEND:VCALENDAR"; 
 
\t window.open("data:text/calendar;charset=utf8," + escape($scope.icsMSG),"_self"); 
 
    }; 
 
}]);
.event { 
 
    height: 150px; 
 
    width: 250px; 
 
    border: 1px solid lightgrey; 
 
    background-color: skyblue; 
 
    margin: 10px; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-sanitize/1.6.5/angular-sanitize.js"></script> 
 

 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <div ng-repeat="eventObj in card" class="event"> 
 
    Subject: <span ng-bind-html="trustAsHtml(eventObj.Name)"></span> 
 
    <br /><br /> \t 
 
    Venue:<span>{{eventObj.Venue}}</span> 
 
    <br /><br /> \t 
 
    Date:<span>{{eventObj.StartDate | date:'fullDate'}}</span> 
 
    <br /><br /> 
 
    <button ng-click="add(eventObj.EventID)">Add to Outlook</button> 
 
    </div> 
 
</div>

+0

ネットワークコンソールに表示されるエラーを教えてください。何かがブロックされているようなもの。 – Doomenik

+0

ああ、adblockerを無効にするのを忘れないでください。そうしないと、とにかく読み込まれません。 – Doomenik

+0

私は答えを更新します。ここに作業デモがあります。 https://plnkr.co/edit/sFhaSJ2Ir9PYUObdtcnj?p=preview – Ved

答えて

1

あなたは角度1.6.xのを使用していて、ng-bind-html-unsafeはずっと前に廃止されました。あなたは使用することができます:ng-bind-html

<div ng-bind-html="eventObj.Name"></div> 

注:お使いのコントローラでは、$sce

編集1注入:

フィルタ:

angular.module('myApp') 
.filter('to_trusted', ['$sce', function($sce){ 
    return function(text) { 
     var doc = new DOMParser().parseFromString(text, "text/html"); 
     var rval= doc.documentElement.textContent; 
     console.log(rval) 
     return $sce.trustAsHtml(rval) 
    }; 
}]); 
をお使いのコントローラの内部でこのメソッドを追加します。

HTML

<div ng-app="myApp" ng-controller="myCtrl"> 
    <div ng-repeat="eventObj in card" class="event"> 
    Subject: <span ng-bind-html="eventObj.Name|to_trusted"></span> 
    <br /><br /> 
    Venue:<span>{{eventObj.Venue}}</span> 
    <br /><br /> 
    Date:<span>{{eventObj.StartDate | date:'fullDate'}}</span> 
    <br /><br /> 
    <button ng-click="add(eventObj.EventID)">Add to Outlook</button> 
    </div> 
</div> 

作業デモ:https://plnkr.co/edit/sFhaSJ2Ir9PYUObdtcnj?p=preview

+0

ありがとうございました!しかし、部分的に機能します!上記のスニペットで更新されたコードを確認してください。 – Sunny

+0

[この回答](https://stackoverflow.com/questions/44839390/ignore-unsafe-html-in-angular/44841269#44841269)を確認してください。信頼できないHTMLを信頼できるものとして設定する必要があります。 –

+0

動作しません。私はそれを間違って使っているかもしれません。手伝っていただけませんか? – Sunny

関連する問題