Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как вставить в AngulagJS html-переменную?  (https://javascript.ru/forum/angular/69644-kak-vstavit-v-angulagjs-html-peremennuyu-%C2%A0.html)

Risa 08.07.2017 17:53

Как вставить в AngulagJS html-переменную? 
 
Как вставить в html в AngulagJS html-переменную?
Вот так вставляет просто текст
{{varName}}
, не преобразовывая в html. А так
<span ng-bind-html="varName"></span>
вообще ничего не вставляет.
Помогите, пожалуйста!
$scope.varName = ' > <span class = "btnLink" ng-click = "infoSomeProc()">Информация</span>';

Может, с помощью jQuery как-то можно это сделать?

ksa 10.07.2017 09:58

Цитата:

Сообщение от Risa
Может, с помощью jQuery как-то можно это сделать?

В некий хтмл вставить другой, используя JS, не проблема... :D

Проблема в том, что ты не понимаешь принципы работы Ангулара. :(

Risa 10.07.2017 14:50

Цитата:

Сообщение от ksa
Проблема в том, что ты не понимаешь принципы работы Ангулара

Какие именно? Ссыль на документацию, плз, что конкретно я не понимаю.
Цитата:

Сообщение от ksa
В некий хтмл вставить другой, используя JS, не проблема...

Пример в студию.

ksa 10.07.2017 15:06

Цитата:

Сообщение от Risa
Пример в студию.

Так ты и про это не знаешь? :blink:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
span {
	color: red;
}
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<p>Test</p>
<script type='text/javascript'>
var o=document.getElementsByTagName('p')[0];
o.innerHTML+='<span>Text</span>';
</script>
</body>
</html>

ksa 10.07.2017 15:41

При использовании Ангулар, вставить какой-то произвольный динамический кусок, да еще не нарушив "ангуларности" всей страницы не так-то просто...

Это можно сделать используя сервис $compile

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<style type='text/css'>
.btnLink {
	color: red;
	cursor: pointer;
}
</style>
<script type='text/javascript'>
angular.module('MyMod', [])
  .directive('myBuildElements', ['$compile',
    function($compile) {
      return {
        restrict: 'E',
        link: function(scope, element) {
          element.append('<span class="btnLink" ng-click="infoSomeProc()">Информация</span>');
          $compile(element.contents())(scope);
        }
      };
    }
  ])
  .controller('MyCtrl', function($scope) {
	  $scope.infoSomeProc=function(){
		  alert('Ok');
	  };
  })
</script>
</head>
<body ng-app="MyMod" ng-controller="MyCtrl">
    <my-build-elements></my-build-elements>
</body>
</html>

ksa 10.07.2017 15:54

Цитата:

Сообщение от Risa
Помогите, пожалуйста!
$scope.varName = ' > <span class = "btnLink" ng-click = "infoSomeProc()">Информация</span>';

Вот вариант собственно с переменной...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<style type='text/css'>
.btnLink {
	color: red;
	cursor: pointer;
}
</style>
<script type='text/javascript'>
angular.module('MyMod', [])
  .directive('myBuildElements', ['$compile',
    function($compile) {
      return {
        restrict: 'E',
        link: function(scope, element) {
          element.append(scope.varName);
          $compile(element.contents())(scope);
        }
      };
    }
  ])
  .controller('MyCtrl', function($scope) {
	  $scope.varName='<span class="btnLink" ng-click="infoSomeProc()">Информация</span>';
	  $scope.infoSomeProc=function(){
		  alert('Ok');
	  };
  })
</script>
</head>
<body ng-app="MyMod" ng-controller="MyCtrl">
    <my-build-elements></my-build-elements>
</body>
</html>


Часовой пояс GMT +3, время: 13:39.