var str1 = "Sarah";
var str2 = "Tom";
var strTable = "<table style='width:100%'><tr><th>"+ str1 +"</th><th>"+ str2 +"</th> <th>Age</th> </tr> <tr> <td>Jill</td><td>Smith</td><td>50</td></tr></table>";
$scope.rTable= strTable;
Я пытаюсь передать HTML-код в $Scope.rTable, но вместо рендеринга таблицы он показывает HTML-код в том виде, в каком он находится на выходе.
т.е.
<table style='width:100%'><tr><th>Sarah</th><th>Tom</th> <th>Age</th> </tr> <tr> <td>Jill</td><td>Smith</td><td>50</td></tr></table>
Я хочу, чтобы это было так:







Это неправильный способ кодирования. Код должен быть похож на
В контроллере
$scope.str1 = "Sarah";
$scope.str2 = "Tom";
В HTML
Считая имя вашего контроллера DemoController
<body ng-controller = "DemoController">
<table style='width:100%'>
<tr><th> {{str1}} </th>
<th> {{str2}} </th>
<th>Age</th>
</tr>
</table>
</body>
И если ваши данные огромны, рекомендуется использовать массив объектов с ng-repeat. Вы можете прочитать это здесь -> https://docs.angularjs.org/api/ng/directive/ngRepeat
Спасибо, но то, что я хотел сделать, невозможно, мне нужен был способ создания таблицы во время выполнения.
Не могли бы вы объяснить сценарий, почему вам нужно динамически создавать таблицу?
Используйте ng-bind-html и $ sce.
Контроллер
app.controller('MainCtrl', function($scope, $sce) {
var str1 = "Sarah";
var str2 = "Tom";
var strTable = "<table style='width:100%'><tr><th>" + str1 + "</th><th>" + str2 + "</th> <th>Age</th> </tr> <tr> <td>Jill</td><td>Smith</td><td>50</td></tr></table>";
$scope.rTable = $sce.trustAsHtml(strTable);
});
HTML
<body ng-controller = "MainCtrl">
<div ng-bind-html = "rTable"></div>
</body>
используйте
ng-bind-html = "rTable"с модулем ngSanitize. Или скомпилируйте с$compile(в директиве)