2013-08-26 34 views
35

Tôi đang học góc cạnh. Tôi không hiểu sự khác nhau giữa onLoad và ng-init để khởi tạo biến là gì. Trong phạm vi nào nó tạo ra biến này.Sự khác biệt giữa onLoad và ng-init trong góc

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> 

cũng hãy cho tôi một số ý tưởng về phạm vi bị cô lập.

Trả lời

49

ng-init là một chỉ thị có thể được đặt bên trong div 's, span' s, bất cứ điều gì, trong khi onload là một thuộc tính cụ thể cho các chỉ thị ng-include có chức năng như một ng-init. Để xem ý tôi là hãy thử một cái gì đó như:

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

Bạn sẽ thấy chỉ mục thứ hai xuất hiện.

Phạm vi biệt lập là phạm vi không được thừa kế nguyên mẫu từ phạm vi gốc. Trong các thuật ngữ của laymen nếu bạn có một widget không cần đọc và ghi vào phạm vi cha mẹ tùy ý thì bạn sử dụng một phạm vi cô lập trên widget để widget và widget có thể tự do sử dụng phạm vi của chúng mà không ghi đè các thuộc tính của nhau.

21

Từ tài liệu góc của,

ng-init KHÔNG NÊN được sử dụng cho bất kỳ khởi tạo. Nó chỉ nên được sử dụng để đánh răng. https://docs.angularjs.org/api/ng/directive/ngInit

onload nên được sử dụng nếu bất kỳ biểu thức nào cần được đánh giá sau khi xem một phần (do ng-bao gồm). https://docs.angularjs.org/api/ng/directive/ngInclude

Sự khác biệt chính giữa chúng khi được sử dụng với ng-include.

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

Trong trường hợp này, myFunction được gọi mọi người xem một phần được tải.

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

Trong khi đó, trong trường hợp này, myFunction được gọi là chỉ một lần khi xem mẹ được tải.

0

Làm việc cho tôi.

<div ng-show="$scope.showme === true">Hello World</div> 
<div ng-repeat="a in $scope.bigdata" ng-init="$scope.showme = true">{{ a.title }}</div> 
Các vấn đề liên quan