我有一个使用angularJs bootstrap指令制作的简单选项卡UI。
我需要计算页面上有多少div有一些id。问题是角度评估每个标签点击时的功能。这是正常的吗?如何才能首次调用函数?
PLUNKR:http://plnkr.co/edit/HIRzYOVX8huEDL2snqJM?p=preview
$scope.test = function(){
$scope.myId = window.document.getElementById("ciccio")
}
答案 0 :(得分:3)
您第一次尝试的问题是该函数被放置在angular的视图数据绑定{{}}内,因此无论何时更改都会调用它。在视图中,函数只应放在ng-init,ng-show等指令中
大多数情况下,如果你想要一个函数只能运行一次,那么从ng-init指令调用一次,这个指令在自动引导角度后运行。但是,由于此函数处理页面上的元素,因此必须确保呈现所有内容。你可以使用angular.element(document).ready,类似于jQuery的ready函数:
angular.element(document).ready(function () {
var scope = angular.element(window.document.getElementById("tabsContainer")).scope();
scope.getDivs();
});
第二行获取包含div的控制器的正确$ scope(我添加了#tabsContainer id:
<div id="tabsContainer" ng-controller="TabsDemoCtrl">
<tabset vertical="true" type="navType">
<tab heading="Vertical 1"><div id="ciccio">Content 1</div></tab>
<tab heading="Vertical 2">Vertical content 2</tab>
</tabset>
</div>
此处更新了plunker http://plnkr.co/edit/xkzcJfMFnmdfCQtOWEY0