Angular js ng-init在元素的显示块上

时间:2014-08-20 07:01:48

标签: javascript angularjs

一旦元素可见,我需要使用ng-init调用角度控制器函数...

前:

//Do not call function as element is hidden.
<div style="display: none" ng-init="function()"></div>

//Call function as element is visible.
<div style="display: block" ng-init="function()"></div>

如何相应地检查ng-init和调用函数?

1 个答案:

答案 0 :(得分:2)

使用ng-if

<div id="myDiv" ng-if="show" ng-init="init()"></div>

ng-if只要表达式的计算结果为false,就不会将该元素放入DOM中。

演示:plnkr (在2秒后显示div时运行init函数)

修改

显然,display-property是在angular的上下文之外设置的。我很确定很难通过style属性使其工作。我可以提出的最佳建议是首先获得对div的引用,然后使用$apply使ng-if的表达式为真。

使用JQuery:

var scope = angular.element($('#myDiv')).scope();
scope.$apply(function() {
    scope.show = true;
});

使用angular.element获取对范围的引用,然后使用$apply以一种方式更改属性,以便触发Angular的脏检查并使div显示。