HTML 콘텐츠를 동적으로로드하는 지시문을 만들면 생성 된 HTML에서 해당 지시문의 함수를 호출 할 수없는 것처럼 보입니다. 내 생각 엔 콘텐츠가 지시문에서 생성 된 후에 링크되어야한다는 것입니다. 동적 인 내용을 변경 한 후에 요소를 컴파일하려고 시도하지만 도움이되지 않습니다. 함수는 결코 호출되지 않습니다. 이것을 할 수있는 방법이 있습니까? (많은 미리 감사드립니다!)AngularJS - ng-bind-html에서 동적 내용의 지시 함수를 호출하는 방법은 무엇입니까?
아래 코드에서 지침의 템플릿에서 doIt() 함수에 대한 정적 호출이 있음을 알 수 있습니다. 그거야. 그러나 동적 콘텐츠 내에서 동일한 함수에 대한 호출이 작동하지 않습니다. 여기
<issue obj="obj" label="Make Dynamic Content"></issue>
내 지시어입니다 : 여기
내 지시를 호출하는 요소의
(function() {
angular.module('myModule').directive('issue', function ($compile, $sce) {
return {
restrict: 'EA',
scope: {
label: '@',
obj: '='
},
templateUrl: 'components/docs/docs.issue.html',
link: function (scope, element, attrs){
scope.theLabel = attrs.label;
scope.doIt = function() {
alert("DOIT CALLED FROM WITHIN ISSUE");
};
scope.showIssue = function() {
// THIS CALL TO doIt() FAILS -- NEVER GETS CALLED...
var s = '<p>Dynamic content: <br><a href="" ng-click="doIt()">Click Me</a></p>';
scope.obj = {content: $sce.trustAsHtml(s)};
jQuery('#issue-panel').show();
$compile(element)(scope);
};
}
};
});
}).call(this);
그리고 여기 지시어에 대한 HTML 템플릿입니다 ... {{theLabel}}에 말할 것이다 "확인 동적 콘텐츠 "입니다. 클릭하면 obj.content 내에 동적 컨텐츠가 생성됩니다. 생성 된 내용 위에 표시되는 doIt() 정적 호출이 있습니다.
<div id="win-container">
<a href="" ng-click="showIssue()">
{{theLabel}}
</a>
<div id="issue-panel">
<div class="topicWin-content">
<!-- THIS CALL TO doIt() WORKS... -->
<p>Static content:<br> <a href="" ng-click="doIt()">Static Click</a></p>
<div ng-bind-html="obj.content"></div>
</div>
</div>
</div>
applyAsync()의 ted 콘텐츠 - 아직 기쁨이 없습니다. – cud
이것은 문자열에서 동적 HTML을 만드는 방법에 대한 긴 질문 중 하나입니다. 문자열에 HTML을 저장하는 것은 앵귤러 방식과 반대이며 일반적으로 어쨌든 필요하지 않습니다. 실제 템플릿이 아닌 문자열에 HTML을 저장하는 유일한 이유는 완전히 다른 종류의 컨텐츠 관리 인 사용자 생성 컨텐츠를위한 것입니다. – Claies
@Claies 필자의 경우 문자열에 관한 것은 아니지만 데이터 소스는 프로세스 일 수도 있고 API 결과 일 수도 있고 파일의 다른 형식으로 된 문자열 일 수도 있습니다. 요점은 콘텐츠를 앱 GUI. 앵귤러 앱이 콘텐츠를 가져 오는 콘텐츠라면 콘텐츠에 링크가 필요한 경우 해당 링크는 각도 앱을 호출해야합니다. 앱보기에서 텍스트 콘텐츠를 제공해서는 안된다는 말에는 고유 한 특성이 있나요? – cud