いくつかのマークアップとロードされたコントローラーがあります。
次に、以前に定義したコントローラーの 1 つを使用している ajax によって、いくつかのモーダル ウィンドウのコンテンツを読み込みます。しかし、モーダルが読み込まれるまでは必要ないため、このコントローラーは使用されていないようです。
質問: モーダルがロードされたときにコントローラーを機能させる方法は? $scope.$digest() を試したところ、「ダイジェストが進行中です」というエラーが発生しました。
index.html
<html data-ng-app="foo">
<head>
<script src="/js/app.js"></script>
</head>
<body>
<div id="modal"></div>
</body>
</html>
js/app.js
!(function(){
function FormCtrl($scope) {
console.log($scope); // never fired
$scope.Submit = function() {
console.log('submit'); // never fired too :C
}
}
angular.module('foo', []).controller('FormCtrl', FormCtrl);
})();
ajax によって読み込まれ、#modal に挿入された html コンテンツ
<div data-ng-controller="FormCtrl">
<form name="signup" data-ng-submit="Submit()">
<!-- form data -->
</form>
</div>
解決:
$.modal().open({
onOpen: function($e) {
$http.get('/views/' + url).success(function(data) {
$compile(data)($scope, function(clonedElem) {
$e.html(clonedElem);
});
// $e.html(data); was used instead of statement above
});
}
});