2016-07-11 5 views
1

Ich versuche, abgerufenen Inhalt von AJAX in Raw html anzuzeigen. Hier ist mein Code in einer Datei:Kann abgerufene Daten nicht mit RAW html angularjs anzeigen

<html ng-app="fetch"> 
<head> 
<title>Вывод с базы</title> 
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.24/angular.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-sanitize.js"></script> 
</head> 

<body> 
<br> 
    <div class="row"> 
    <div class="container"> 
     <h1>С базы вывод</h1> 
     <div ng-controller="dbCtrl"> 
     <input type="text" ng-model="searchFilter" class="form-control"> 
     <table class="table table-hover"> 
      <thead> 
       <tr> 
        <th>News title</th> 
        <th>News description</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="news in data | filter:searchFilter"> 
        <td>{{news.title}}</td> 
        <td ng-bind-html='data'>{{news.description}}</td> 
       </tr> 
      </tbody> 
     </table> 
     </div> 
    </div> 
    </div> 
</body> 

<script> 
    angular.module('fetch', ['ngSanitize']).controller('dbCtrl', ['$scope', '$http', function ($scope, $http) { 
     $http.get("/ajax.php") 
      .success(function(data){ 
       $scope.data = data; 
      }) 
      .error(function() { 
       $scope.data = "error in fetching data"; 
      }); 
    }]); 
</script> 

</html> 

Aber Ausgabe von <td ng-bind-html='data'>{{news.description}}</td> dieser Teil nicht HTML-Tags akzeptieren. Ausgang ist: [Objekt, object] und etc.

Hier ist meine ajax.php

<?php 
//database settings 
$conn=new mysqli("1", "1", "1", "1"); 
       // Check connection 
       if ($conn->connect_error) { 
        die("Connection failed: " . $conn->connect_error); 
       } 
mysqli_query($conn, "SET NAMES utf8mb4"); 

    $result = mysqli_query($conn, "select * from rss where   source='tengrinews.kz' limit 20"); 

$data = array(); 

    while ($row = mysqli_fetch_array($result)) { 
     $data[] = $row; 
     } 
     echo json_encode($data); 
     ?> 

Ich habe die Winkel sanieren und ngSanitize zu meinem Modul hinzufügen, was ist das Problem?

+0

Ihre aktuellen Daten werden in '.data' Feld: Sie müssen JSON filter (sonst wird es als [object Object] gemacht werden) und eine neue Zelle<td>, um es anzuzeigen verwenden. Ändern Sie die Zuweisung Ihrer Daten in die Scope-Variable in $ $ scope.data = data.data; ' – Chinni

+0

@Chinni nein, es funktioniert nicht. Titel hat keine HTML-Tags und leicht angezeigt und meine Beschreibung auch, aber die Beschreibung zeigt mit HTML-Tags. Wenn ich das ng-bind-html-Attribut lösche/ – ATIKON

+0

Zuerst ist dies -> ' {{news.description}}' falsch, oder Sie verwenden ng-bind-html oder Sie verwenden Interpolation, welche Eigenschaft hat 'html' Tags? Die 'Beschreibung'? – developer033

Antwort

2

Sie können ng-bind-html und die Interpolation {{}} nicht zusammen verwenden.

<td ng-bind-html='data'>{{news.description}}</td> 

für:

<td ng-bind-html="news.description"></td> 

Hinweis:

Wenn Sie also das description zeigen wollen, sollten Sie

dies ändern Wenn Sie möchten, Zeigen Sie die object data an

<td ng-bind="data | json"></td>