Подтвердить что ты не робот

Разница между onLoad и ng-init в angular

Я изучаю angular. Я не понимаю, в чем разница между onLoad и ng-init для инициализации varibale. В какой области он создает эту переменную.

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>

Пожалуйста, дайте мне некоторое представление об изолированном объеме.

4b9b3361

Ответ 1

ng-init - это директива, которая может быть помещена внутри div 's, span' s, независимо от того, а onload является атрибутом, специфичным для директивы ng-include, которая функционирует как ng-init. Чтобы увидеть, что я имею в виду, попробуйте что-то вроде:

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

Вы увидите, что появляется только вторая.

Изолированная область видимости - это область, которая не прототипически наследуется от ее родительской области. Если у вас есть виджет, который не нужно читать и записывать в родительскую область произвольно, вы используете область виджета для виджета, чтобы виджет и контейнер виджетов могли свободно использовать свои области действия без переопределения свойств друг друга.

Ответ 2

В документации angular

ng-init НЕ ДОЛЖЕН использоваться для любой инициализации. Он должен использоваться только для псевдонимов. https://docs.angularjs.org/api/ng/directive/ngInit

onload следует использовать, если какое-либо выражение нужно оценить после загрузки частичного представления (по ng-include). https://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 вызывается только один раз при загрузке родительского представления.

Ответ 3

Работает для меня.

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