私は気が狂ってしまうので、これが誰かにとって簡単なものであることを願っています。plnkr.coで問題を体験してください。
コントローラーからビューに HTML を配信したいと考えています。これは、 Twitter Bootstrapの厚意により提供された例を基にしたコントローラーです。
angular.module('plunker', ['ui.bootstrap']);
function DropdownCtrl($scope) {
$scope.items = [
"The first choice!",
"And another choice for you.",
"but wait! A third!"
];
$scope.html = '<li class="dropdown" ng-controller="DropdownCtrl">' +
'<a class="dropdown-toggle">' +
'Click me for a dropdown, yo!' +
'</a>' +
'<ul class="dropdown-menu">' +
'<li><a>Why</a></li>' +
'<li><a>doesn\'t</a></li>' +
'<li><a>this</a></li>' +
'<li><a>work???</a></li>' +
'</ul>' +
'</li>';
}
確かに、驚くようなことは何もありません。ビューは次のとおりです。
<h3>This works fine</h3>
<li class="dropdown" ng-controller="DropdownCtrl">
<a class="dropdown-toggle">
Click me for a dropdown, yo!
</a>
<ul class="dropdown-menu">
<li ng-repeat="choice in items">
<a>{{choice}}</a>
</li>
</ul>
</li>
<h3>Why doesn't this work?</h3>
<div ng-controller="DropdownCtrl" ng-bind-html-unsafe="html"></div>
簡単に言えば、提供されている例のように、最初のドロップダウンは正常に機能します。ただし、2 番目のドロップダウンは何もしません。そのコードはコントローラーからビューに渡され、そのまま配信されますが、ドロップダウンはドロップしません。
誰かが以前にこの問題に遭遇したことを教えてください。