Разница между onLoad и ng-init в угловых

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

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>

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

3 ответа

Решение

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

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

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

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

Из угловой документации,

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 вызывается только один раз, когда загружается родительское представление.

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

<div ng-show="$scope.showme === true">Hello World</div>
<div ng-repeat="a in $scope.bigdata" ng-init="$scope.showme = true">{{ a.title }}</div>
Другие вопросы по тегам