angularjs
  • ng-bind-html
  • 2016-06-23 85 views 0 likes 
    0

    我需要將$scope.htmlView標籤呈現到html視圖中。將html標籤從控制器綁定到html視圖

    我已經嘗試過使用ng-bind-html。它呈現html標籤,但範圍變量值不會出現。

    如何渲染html標籤和範圍變量值?

    這是控制器:

    $scope.newObj = { 
        billStatus : true; 
        eventTime : "2015-01-10" 
    }; 
    
    $scope.htmlView = '<p>{{newObj.eventTime}}</p> <div style="margin-top: -15px;"><md-checkbox ng-checked="{{newObj.billStatus}}" style="margin-left: 0px;" aria-label="Bilable"><span style="margin-left:0px;">Bilable</span> </md-checkbox></div>' 
    

    預期的結果是:

    <p> 2015-01-10</p> 
    <div style="margin-top: -15px;"> 
        <md-checkbox ng-checked="true" style="margin-left: 0px;" aria- label="Bilable"> 
        <span style="margin-left:0px;">Bilable</span> 
        </md-checkbox> 
    </div> 
    

    我搜索在互聯網上數天,仍然便無法找出一個辦法弄清楚這一點。請幫幫我。謝謝。

    +0

    您是否嘗試過這樣做:$ sce.trustAsHtml(string)'trustAsHtml? – Rakeschand

    +1

    檢查此問題http://stackoverflow.com/questions/17417607/angular-ng-bind-html-and-directive-within-it –

    +0

    此處引用(http://stackoverflow.com/questions/18157305/angularjs-compiling -dynamic-html-strings-from-database) –

    回答

    1

    你必須做2件事。

    1. 使用數據-NG綁定,HTML = 「」
    2. 使用$ sce.trustAsHtml(串)

    更新: 如果你不會使用角度表達式,你必須編譯它們使用

    $compile

    你可以通過閱讀這$SCE

    0

    更多,我會告訴你一個很長的路要走,但它會幫助you.Make這樣一個自定義的指令。

    app.directive('dynamic', function ($compile) { 
    return { 
    restrict: 'A', 
    replace: true, 
    link: function (scope, ele, attrs) { 
        scope.$watch(attrs.dynamic, function(html) { 
        ele.html(html); 
        $compile(ele.contents())(scope); 
        }); 
        } 
        }; 
        }); 
    

    用作

    <span dynamic="{{htmlView}}" > 
    
    +0

    所以基本上把字符串轉換成html模板我需要使用$ compile。對 ?? –

    0

    你好請檢查此琴 https://plnkr.co/edit/iqNltdDYv2n9Agke0C2C?p=preview

    HTML

    <div ng-controller="ExampleController"> 
         <p >{{newObj.eventTime}}</p> 
         <p dynamic="htmlView"></p> 
    </div 
    

    和JS

    (function(angular) { 
        'use strict'; 
    angular.module('bindHtmlExample', ['ngSanitize']) 
        .controller('ExampleController', ['$scope', function($scope) { 
    
         $scope.newObj = { 
         billStatus : true, 
         eventTime : "2015-01-10" 
    } 
    
    $scope.htmlView = '<p> {{newObj.eventTime}}</p> <div style="margin-top: -15px;">Hello <md-checkbox ng-checked="{{newObj.billStatus}}" style="margin-left: 0px;" aria-label="Bilable"><span style="margin-left:0px;">Bilable</span> </md-checkbox></div>' 
        }]) 
    
        .directive('dynamic', function($compile) { 
        return { 
         restrict: 'A', 
         replace: true, 
         link: function (scope, element, attrs) { 
          scope.$watch(attrs.dynamic, function(html) { 
           element[0].innerHTML = html; 
           $compile(element.contents())(scope); 
          }); 
         } 
        }; 
    }); 
    })(window.angular); 
    
    +0

    可以請你解釋ngSanitize –

    +0

    的目的,即一個不需要如果你刪除它也將工作正常 –

    相關問題