2015-11-09 45 views
2

如果$ scope变量发生更改,我试图使ng-include重新渲染。例。Force ng-include重新渲染

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

我的问题是,如果currentExercise.editTemplate改变但它有相同的模板文件。它不会重新渲染,因此不会触发控制器更新currentExercise模型。

的控制器:

$scope.currentEditExercise = param.exercise; 

在NG-包括模板: 我呼吁该模板子控制器。

$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,完整的URL 更改,即使param.exercise不会。

+0

是的,完美的,我认为这是缓存。谢谢 –

+0

不客气!感谢您接受我的回答:-) – Cerbrus