2017-04-25 1 views

답변

0

$compile 서비스를 사용해야합니다.

그냥 같은 HTML 문자열을 컴파일 :

var html = $compile('<div ng-model="name">{{name}}</div>')($scope);

가 컨트롤러에 $compile 서비스를 주입하는 것을 잊지 마십시오.

+0

Hasan Ibrahim에게 감사드립니다. 제 각기 콘트롤러에서 같은 생각을하려고했으나 뭔가 잘못되었습니다 : http://stackoverflow.com/questions/43603948/angularjs-compile-is-not-a-function –

+0

@ NhạHoàng도이 문제를 허용합니다. –

1

각도의 기본 제공 지시문이 들어있는 html을 추가 할 때 각도 인식을 위해 $compile으로 다시 컴파일해야합니다.

은 아래 코드 스 니펫을 참조하십시오.

angular.module("app", []) 
 
    .controller("myCtrl", function($scope, $compile) { 
 
    $scope.name = 'test value'; 
 
    $scope.test = function() { 
 
     var element = angular.element($('#somediv')); 
 
     element.html('<div ng-model="name">{{name}}</div>'); 
 
     $compile(element)($scope); 
 
    }; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 

 
<div ng-app="app" ng-controller="myCtrl"> 
 
    <input type="text" ng-model="name"> 
 
    <button ng-click="test()">Add</button> 
 
    <div id="somediv"></div> 
 
</div>

대신 같은 것을 수행 각도에서 jQuery를 DOM 조작을 사용하지 마십시오
0

:

angular.module("main", []).controller("mainController", function($scope){ 
 

 
    $scope.toggle = function(){ 
 
    
 
    $scope.show = !$scope.show; 
 
    
 
    } 
 

 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js"></script> 
 
<html ng-app="main"> 
 
<head> </head> 
 

 

 
<body ng-controller="mainController"> 
 
<div> 
 
<button ng-click="toggle()"> Toggle Div </button> 
 

 

 
<div ng-if="show"> Div Contents </div> 
 
</div> 
 
</body> 
 
</html>

관련 문제