2015-11-09 2 views
2

Я пытаюсь сделать ng-include re render, если переменная переменной $ изменяется. Пример.Force ng-include для повторной визуализации

<div ng-include src="'assets/courses/templates/editModules/'+currentEditExercise.editTemplate"></div> 

Моя проблема заключается в том, что если изменения currentExercise.editTemplate, но он имеет тот же файл шаблона. Это не означает, что вы не запускаете контроллер для обновления текущей модели Exercise.

на контроллере:

$scope.currentEditExercise = param.exercise; 

на нг-шаблон включает: я называю контроллер ребенка для этого шаблона.

$scope.exercise = $scope.$parent.currentEditExercise; 
+0

Изменения в вашей модели данных должны изменить отображаемый контент. Вы делаете какой-то динамический контент на стороне сервера? Пожалуйста, покажите все соответствующие коды – charlietfl

+0

Я думаю, что @charlietfl прав, но вы попробовали '$ scope. $ Apply()'. – AntiHeadshot

+0

не может позвонить $ apply() говорит, что он уже запущен. –

ответ

3

Это происходит из-за того, что ng-include источников кешируются.
Это кэширование может быть предотвращено путем добавления случайной строки запроса в шаблон URL:

Заменить:

$scope.currentEditExercise = param.exercise; 

С:

$scope.currentEditExercise = param.exercise + '?r=' + Math.random(); 

Таким образом, всякий раз, когда вы меняете currentEditExercise, полный адрес будет изменение, даже если param.exercise нет.

+0

Да, отлично, я думал, что это кеширование. спасибо –

+0

Добро пожаловать! Спасибо, что приняли мой ответ :-) – Cerbrus