2015-11-25 6 views
0

У меня есть контроллер, который я называю API на MVC. Этот API возвращает мне частичный вид. Это частичное представление связано с моим контроллером, из которого я вызываю API.angularjs: Перезагрузите контроллер

Теперь, как только я получаю частичный вид назад, я исчезаю из html представления, а затем повторно просматриваю представление.

но мой метод контроллера никогда не запускается, я думаю, потому что контроллер уже запущен.

Вопрос: Можно ли вызвать метод контроллера при его загрузке.

HTML:

<div id="pageholder"> 
      <-- here is my view , which I am changing thru API , and I want to re render it, and also want to perform certain controller methods --> 
      </div> 

ANGULAR:

$http({ 
    method: 'POST', 
    url: url, 
    data: { 
     config: item, 
     parameter: itemParametrs 
    } 

}).success(function(data, status) { 
    $('#pageholder').empty(); 
    $scope.username="username"; 
    $('#pageholder').html(data); 
}); 

ПОЖАЛУЙСТА ПОМОГИТЕ!

+0

оказывать html, который вы можете называть $ apply, поскольку вы не используете угловые директивы для управления DOM, он не вызван. Чтобы перерегистрировать контроллер, вы можете либо иметь функцию, которая вызывает некоторую функцию функции init после успеха, просто вызовите вашу функцию init. .. или я думаю, вы можете обновить страницу. –

ответ

1

Вам необходимо скомпилировать этот новый HTML-код. Нет директивы или контроллер не будет следить Угловое, если вы динамически писать HTML:

.success(function(data, status) { 
    $scope.username="username"; 

    var $pholder = $('#pageholder'); 
    $pholder.empty(); 
    $pholder.html(data); 

    // Recompile the HTML so angular can process it 
    $compile($pholder)($scope); 
}); 

PS: вам нужно будет получить $compile службу в вашей директиве/контроллер (так же, как вы получите $http)

Смежные вопросы