Инициализировать контроллер внутри шаблона, который загружается с помощью директивы?

#angularjs

#angularjs

Вопрос:

Получить ответ

 <section ng-controller="BookingController"></section>
  

Директива

 MyApp.directive "loadThing", ($rootScope, $compile) ->
    return {
        restrict: "AE",
        link: (scope, element, attrs) ->
            $.get BASE_URL   '/load/template/'   attrs.loadThing, (response) ->
                element.html(response)
                $compile(element)
    }
  

Я загружаю шаблон с помощью ajax, в котором объявлен ng-контроллер, но контроллер не инициализируется.

Что я здесь делаю не так?

Ответ №1:

Ссылка обычно используется для поведения на основе событий, я не уверен, почему вы используете Ajax, но вы можете попробовать объявить свой контроллер и шаблон в контроллере. Это будет выглядеть примерно так:

 MyApp.directive('loadThing', function($rootScope, $compile) {
    return {
         restrict: "AE",
         templateUrl: 'yourPathHere.js',
         controller: 'MyController'
    }
});
  

Ответ №2:

Вздох, это была глупая ошибка.

Необходимо было:

 template = $(response)
$compile(template)(scope)
element.append(template)
  

Ключевой недостаток не заключался в вызове функции, возвращаемой $compile .