onLoad和ng-init之间的区别

我正在学习angular度。 我不明白onLoad和ng-init在初始化varibale时有什么区别。 在哪个范围内创build这个variables。

For example

 <ng-include onLoad="selectedReq=reqSelected" src="'partials/abc.html'"></ng-include> 

OR

 <ng-include ng-init="selectedReq=reqSelected" src="partials/abc.html"></ng-include> 

请给我一些关于隔离范围的想法。

ng-init是一个指令,可以放在divspan ,而onload则是ng-include指令的一个特殊属性,作为ng-init 。 看看我的意思是尝试像这样:

 <span onload="a = 1">{{ a }}</span> <span ng-init="b = 2">{{ b }}</span> 

你会看到只有第二个出现。

一个独立的范围是一个范围,它不能从其父范围原型inheritance。 用外行的话来说,如果你有一个不需要随意读写父范围的小部件,那么你可以在小部件上使用隔离范围,这样小部件和小部件容器可以自由使用它们的范围,而不会覆盖对方的属性。

从angular度的文件,

ng-init不应该用于任何初始化。 它应该只用于别名。 https://docs.angularjs.org/api/ng/directive/ngInit

如果在加载部分视图之后需要评估任何expression式(通过ng-include),则应该使用onloadhttps://docs.angularjs.org/api/ng/directive/ngInclude

它们之间的主要区别在于与ng-include一起使用时

 <div ng-include="partialViewUrl" onload="myFunction()"></div> 

在这种情况下,每次加载部分视图时都会调用myFunction

 <div ng-include="partialViewUrl" ng-init="myFunction()"></div> 

而在这种情况下,当加载父视图时,仅调用一次myFunction

为我工作。

 <div ng-show="$scope.showme === true">Hello World</div> <div ng-repeat="a in $scope.bigdata" ng-init="$scope.showme = true">{{ a.title }}</div>