3

我写了下面一段代码来显示角材料对话框中的一些内容。它工作正常,当我添加纯文本到textContent。当我添加HTML时,它将HTML显示为文本。如何绑定的HTML 的textContent

这个作品

<a href="#" ng-click="$scope.Modal()">Sample Link</a> 

    $scope.Modal = function() { 
     $mdDialog.show(
      $mdDialog.alert() 
       .parent(angular.element(document.querySelector('body'))) 
       .clickOutsideToClose(true) 
       .textContent('sample text') 
       .ok('Ok') 
    );  
    } 

这不作品

<a href="#" ng-click="$scope.Modal()">Sample Link</a> 

    $scope.Modal = function() { 
     $mdDialog.show(
      $mdDialog.alert() 
       .parent(angular.element(document.querySelector('body'))) 
       .clickOutsideToClose(true) 
       .textContent('<div class="test"><p>Sample text</p></div>') 
       .ok('Ok') 
    ); 
    } 

在此先感谢

回答

2

您需要一个PPEND到模板,

$mdDialog.show({ 
     parent: angular.element(document.body), 
     clickOutsideToClose: true, 
     template: '<md-dialog md-theme="mytheme">' + 
     ' <md-dialog-content>' + 
     '<div class="test"><p>Sample text</p></div>' + 
     '  <md-button ng-click="closeDialog();">Close</md-button>' + 
     ' </md-dialog-content>' + 
     '</md-dialog>', 
     locals: { 

     }, 
     controller: DialogController 
    }); 

DEMO

0

使用模板代替的textContent,的textContent用于在模型显示计划文本。它不呈现HTML代码

$mdDialog.show({ 
       controller: function ($scope) { 
        $scope.msg = msg ? msg : 'Loading...'; 
       }, 
       template: 'div class="test"><p>{{msg}}</p></div>', 
       parent: angular.element(document.body), 
       clickOutsideToClose: false, 
       fullscreen: false 
      }); 
0

您可以在模板中添加html并在displayOption中添加变量。这将工作。

模板代码

<script type="text/ng-template" id="confirm-dialog-answer.html"> 
<md-dialog aria-label="confirm-dialog"> 
    <form> 
     <md-dialog-content> 
      <div> 
       <h2 class="md-title">{{displayOption.title}}</h2> 
       <p>{{displayOption.content}} <img src="{{displayOption.fruitimg}}"/></p> 
       <p>{{displayOption.comment}}</p> 
      </div> 
     </md-dialog-content> 
     <div class="md-actions" layout="row"> 
      <a class="md-primary-color dialog-action-btn" ng-click="cancel()"> 
       {{displayOption.cancel}} 
      </a> 
      <a class="md-primary-color dialog-action-btn" ng-click="ok()"> 
       {{displayOption.ok}} 
      </a> 
     </div> 
    </form> 
</md-dialog> 
</script> 

控制器代码

$mdDialog.show({ 
         controller: 'DialogController', 
         templateUrl: 'confirm-dialog-answer.html', 
         locals: { 
         displayOption: { 
         title: "OOPS !!", 
         content: "You have given correct answer. You earned "+$scope.lastattemptEarnCount, 
         comment : "Note:- "+$scope.comment, 
         fruitimg : "img/fruit/"+$scope.fruitname+".png", 
         ok: "Ok" 
         } 
         } 
        }).then(function() { 
         alert('Ok clicked'); 

        }); 
0

可以使用htmlContent代替的textContent渲染HTML。下面是文档摘录https://material.angularjs.org/latest/#mddialog-alert

$ mdDialogPreset#htmlContent(string) - 将警报消息设置为HTML。 需要加载ngSanitize模块。 HTML不通过 Angular的编译器运行。

0

当你只需要注入一个或两个东西时,使用模板似乎有一点直观。为了避免使用模板,你需要包含'ngSanitize'来使其工作。

angular.module('myApp',['ngMaterial', 'ngSanitize']) 
.controller('btnTest',function($mdDialog,$scope){ 
    var someHTML = "<font>This is a test</font>"; 
    $scope.showConfirm = function(ev) { 
     // Appending dialog to document.body to cover sidenav in docs app 
     var confirm = $mdDialog.confirm() 
     .title('Please confirm the following') 
     .htmlContent(someHTML) 
     .ariaLabel('Lucky day') 
     .targetEvent(ev) 
     .ok('Please do it!') 
     .cancel('Sounds like a scam'); 
     //Switch between .htmlContent and .textContent. You will see htmlContent doesn't display dialogbox, textContent does.   
     $mdDialog.show(confirm).then(function() { 
     $scope.status = 'Saving Data'; 
     }, 
     function() { 
     $scope.status = 'You decided to keep your debt.'; 
     }); 
    }; 

}) 

公告注入HTML:

var someHTML = "<font>This is a test</font>"; 

我发现这个例子here