当我点击某个除了带有角度的div以外的其他地方时,如何更新ng-include值?

时间:2014-04-16 16:30:06

标签: javascript angularjs

我有这个简化的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();
});

1 个答案:

答案 0 :(得分:0)

如果要在角度环境之外修改模型,则必须使用范围的apply()方法进行更新。

$scope.template = 'template1.html';
$scope.$apply();

此外,我更新了小提琴,使其符合您的要求。

Fiddle