我有这个简化的html:
<div ng-controller="Ctrl">
<div ng-include="template"></div>
</div>
我的template1.html只包含:
<div id="i1" ng-click="clickFunction()">Content of template1.html</div>
template2.html:
<div id="i2"> Content of template2.html </div>
以下JS:
function Ctrl($scope) {
$scope.template = 'template1.html';
$scope.clickFunction = function () {
$scope.template = 'template2.html';
}
}
当我点击我的附带模板时,我的第二个模板被加载而不是第一个模板。
当我点击页面上的其他地方(但不在我的ng-include
div中)时,用模板1替换template2的干净Angular方法是什么?
Here 如果能提供帮助,那就是一个基本的小提琴。
修改:
我已经测试过将以下代码添加到我的控制器中,但模板视图未更新(但是console.log yes,very strange behaviour ...):
jQuery('html').click(function() {
console.log('Click on HTML')
$scope.template = 'template1.html';
});
jQuery('#i2').click(function(event){
event.stopPropagation();
});
答案 0 :(得分:0)
如果要在角度环境之外修改模型,则必须使用范围的apply()方法进行更新。
$scope.template = 'template1.html';
$scope.$apply();
此外,我更新了小提琴,使其符合您的要求。