فرق بین $scope و $rootscop در AngularJs
چهارشنبه 5 آبان 1395$rootscop برای تمامی کنترل ها قابل دسترسی است ، درحالی که $scope در یک کنترلر قابل دسترسی است . برای درک بهتر این مطلب میتوان این مقاله را مطالعه کنید .
مقدمه
ابتدا یک وب سایت خالی و یک فایل اسکریپت ایجاد می کنیم پس از آن فایل اسکیریپتی خود را به آن متصل می کنیم .
در داخل فایل اسکریپت ، یک تابع و یک خاصیت به نام redColour را با شی $scope مینویسیم.

کنترلر redColour رنگ قرمز را روی شی $scope تنظیم می کند و همین اتفاق برای کنترلر greenColourController نیز می افتد.
به علاوه در $scope شی، شی $rootscope را تزریق میکنیم و property رنگrootscope را تعیین میکنیم.
1. controller("redColourController", function ($scope, $rootScope) {
2. $scope.redColour = "Red Colour";
3. $rootScope.rootScopeColour = " Root Scope Colour";
4. })
و در آخر script.js را میبینیم :
var app = angular.module("Demo", []);
app.controller("redColourController",
function ($scope, $rootScope) {
$scope.redColour = "Red Colour";
$rootScope.rootScopeColour = "Root Scope Colour";
});
app.controller("greenColourController",
function ($scope) {
$scope.greenColour = "Green Colour";
});
حال، پروژه شما شامل یک فایل html می باشد .
برای انجام این کار یک عنصر div در قسمت body قرار میدهیم . یک ng-controller با نام redColourController میسازیم و مقدار هر خاصیت آن را نشان خواهیم داد .
کد :HTML
1. <!DOCTYPE html> 2. <html ng-app="Demo"> 3. <head> 4. <title></title> 5. <meta charset="utf-8" /> 6. <script src="scripts/angular.min.js"></script> 7. <script src="/script.js"></script> 8. </head> 9. <body> 10. <div ng-controller="redColourController"> 11. 12. Red Scope Colour : 13. Red Colour Controller : 14. Green Colour Controller : 15. </div> 16. </body> 17. </html>
در اینجا مقدار property را کپی میکنیم که ما میخواهیم نمایش بدهیم و از binding expression استفاده میکنیم.
1. <div ng-controller="redColourController">
2.
3. Red Scope Colour : {{rootScopeColour}}
4. Red Colour Controller : {{redColour}}
5. Green Colour Controller : {{greenColour}}
6. </div>
حال، greenColourController را در div زیر وارد می کنیم .
1. <div ng-controller="greenColourController">
2.
3. Red Scope Colour : {{rootScopeColour}} <br />
4. Grren Colour Controller : {{greenColour}} <br />
5. Red Colour Controller : {{redColour}}
6. </div>
تغییرات را save میکنیم و برنامه را اجرا میکنیم

خاصیت $rootscope color در دو عنصر div در دسترس است چون در شی $scope تعریف شده است .
Red Color Controller : {{redColour}} برای کنترلر رنگ قرمز در دسترس است و به همین دلیل خروجی ما به صورت قرمز نمایش داده می شود.
اما زمانی که شما خاصیت green color را در شی $scope تعریف می کنید ، آن در کنترلر red Color دردسترس نیست ، به همین دلیل ما در خروجی مقدار سبزی مشاهده نمی کنیم .
درحال حاضر ، هیچ مقدار نصبی برای کنترلرهای red و green وجود ندارد .حال می خواهیم به آنها رنگ بدهیم .
1. <span style="color:red" ng-show="greenColour == undefined"> 2. greenColour is undefined 3. </span>
در این قسمت از عنصر span برای نمایش رنگ استفاده کرده ایم و میخواهیم با استفاده از دایرکتیو ng-show یک codition-if بنویسیم که green color ، undefined است یا خیر و اگر شرط مورد نظر true باشد رنگ سبز نمایش داده شود .
این عمل را برای عنصر div دیگر انجام می دهیم .
1. <span style="color:green" ng-show="redColour == undefined"> 2. redColour is undefined 3. </span>
کد پایانی :
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="https://opensource.keycdn.com/angularjs/1.5.8/angular.min.js"></script>
<script type="text/javascript" src="/Script.js"></script>
</head>
<body ng-app="Demo">
<div ng-controller="redColourController">
Red Scope Colour : {{rootScopeColour}}
<br />
Red Colour Controller : {{redColour}}
<br />
Green Colour Controller : <span ng-show="greenColour == undefined" style="color:red"> greenColour is undefined</span>
<br />
</div>
<br />
<br />
<br />
<div ng-controller="greenColourController">
Red Scope Colour : {{rootScopeColour}}
<br />
Grren Colour Controller : {{greenColour}}
<br />
Red Colour Controller : <span ng-show="redColour == undefined" style="color:green">redColour is undefined</span>
<br />
</div>
</body>
</html>
حال تغییرات اعمال شده را ذخیره کرده و صفحه را دوباره بارگذاری می کنیم .

حال میتوان مقدارهای سبز و قرمز را مشاهده کنید .
آموزش angular
- AngularJs
- 2k بازدید
- 0 تشکر