Ответ 1
Вот общий шаблон для ссылки на тезисы, а также демонстрирует несколько концепций Angular:
JS
.directive('parentDirective', function(Resource, $compile){
return {
restrict: 'E',
link: function(scope, elem, attrs){
Resource.loadData().then(function(result){
scope.data = result.data;
var htm = '<child-directive></child-directive>';
var compiled = $compile(htm)(scope);
elem.append(compiled);
});
}
}
})
.directive('childDirective', function(){
return {
restrict: 'E',
template: '<div>Content: {{data.key}}</div>'
}
})
.factory('Resource', function($http){
var Resource = {};
Resource.loadData = function(){
return $http.get('test.json');
}
return Resource;
})
HTML
<body ng-app="myApp">
<parent-directive></parent-directive>
</body>
Обратите внимание, что код контроллера отсутствует. Это связано с тем, что контроллеры никогда не должны манипулировать DOM - одна из причин заключается в том, что он сделает ваш код PITA для тестирования. Итак, я помещаю все в директивы, где это, вероятно, должно быть и в вашем случае.
Я также перевел службу $http в factory. Любое состояние/модель должна быть в сервисе. Среди других причин, делая это, вы можете вводить его практически в любом месте (в том числе внутри директив) для доступа к своим данным, не беспокоясь о том, что он исчезает при выгрузке контроллера.
ИЗМЕНИТЬ
Вы также должны рассмотреть несогласие взгляда на подход динамической загрузки вообще в принятом ответе Динамическое добавление директив Angular