2016-05-10 40 views
0

我想將HTML插入我的div(代碼底部)。我已經處理過這樣的問題,所以我添加了一個過濾器。但是,如果通過切換功能使div可見,則HTML不會從服務中顯示。我已經驗證該服務正在返回正確的HTML代碼。ng-bind-html不起作用

div未被隱藏,但沒有顯示html。

角代碼:

var myApp = angular.module('myApp', []); 
angular.module('myApp').filter('unsafe', function ($sce) { 
    return function (val) { 
     if ((typeof val == 'string' || val instanceof String)) { 
      return $sce.trustAsHtml(val); 
     } 
    }; 
}); 




myApp.controller('myAppController', function ($scope, $http) { 
... 
SERVICE CODE 
... 

$scope.toggleHTMLResults(); 
$scope.HTMLjson = obj[0].HTML;  

HTML代碼:

<div id="returnedHTML" ng-bind-html="HTMLjson | unsafe " ng-hide="HTMLResults">NOT HIDDEN</div> 

我不知道爲什麼,這是行不通的。

這裏是我的Plunker

回答

1

有許多東西不對您的例子。

  • 主要的Javascript文件中聲明兩次,第一次在報頭和第二前收盤身體標記
  • 你調用一個函數爲HTMLAPI(),而不是$scope.HTMLAPI()
  • $scope.HTMLAPI()功能它初始化
  • 之前也被稱爲

固定控制器代碼:

app.controller('myAppCTRL', ['$scope', '$http', function ($scope, $http) { 

    var API = this; 
    $scope.HTMLInput = true; 
    $scope.HTMLResults = true; 

    $scope.toggleHTMLInput = function() { 
     $scope.HTMLInput = $scope.HTMLInput === false ? true : false; 
    } 

    $scope.toggleHTMLResults = function() { 
     $scope.HTMLResults = $scope.HTMLResults === false ? true : false; 
    } 

    $scope.HTMLAPI = function (HTML) { 
      var newJSON = ["[{\"ConditionId\":1111,\"ConditionDescription\":\"<i>DATA GOES HERE</i>\",\"ErrorId\":0,\"DisplayId\":0,\"DisplayName\":\"\",\"ErrorValue\":\"\"}]"]; 
      var obj = JSON.parse(newJSON); 
      $scope.HTMLjson = obj[0].ConditionDescription; 
      $scope.toggleHTMLResults(); 

      console.log($scope.HTMLjson); 
    } 

    $scope.HTMLAPI(); 
}]); 

Working Example

+0

看來Angular的版本也與它有關。在我修復了我的原始示例之後,它仍然無法工作,直到我將版本更改爲1.5.5 – webdad3

+0

@ webdad3很高興我可以幫助:) – Fizzix