مسار AngularJS

ngRoute المodule يساعد تطبيقك في أن يصبح تطبيقًا صفحة واحدة.

ما هو التوجيه في AngularJS؟

إذا كنت ترغب في التنقل إلى صفحات مختلفة داخل التطبيق ولكن تريد أيضًا أن يكون التطبيق SPA (تطبيق صفحة واحدة) دون إعادة تحميل الصفحات، يمكنك استخدام ngRoute المodule.

ngRoute المodule يقوم بتحويل تطبيقك إلى صفحات مختلفة دون إعادة تحميل التطبيق بأكمله.

مثال

التنقل إلى "red.htm"،"green.htm" و "blue.htm":

<body ng-app="myApp">
<p><a href="#/!">الصفحة الرئيسية</a></p>
<a href="#!red">اللون الأحمر</a>
<a href="#!green">اللون الأخضر</a>
<a href="#!blue">اللون الأزرق</a>
<div ng-view></div>
<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/red", {
    templateUrl : "red.htm"
  })
  .when("/green", {
    templateUrl : "green.htm"
  })
  .when("/blue", {
    templateUrl : "blue.htm"
  });
});
</script>
</body>

جرب بنفسك

ماذا أحتاج؟

لجعل تطبيقك جاهزًا للتحويل، يجب أن تتضمن AngularJS Route module:

<script src="https://cdn.staticfile.net/angular.js/1.6.9/angular-route.js"></script>

ثم، يجب عليك تضمين ngRoute إضافة كمتطلب لـ module التطبيق:

var app = angular.module("myApp", ["ngRoute"]);

الآن يمكن لتطبيقك الوصول إلى ما يقدمه $routeProvider module.

استخدم $routeProvider تكوين مسارات مختلفة في التطبيق:

app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/red", {
    templateUrl : "red.htm"
  })
  .when("/green", {
    templateUrl : "green.htm"
  })
  .when("/blue", {
    templateUrl : "blue.htm"
  });
});

أين ذهب؟

تطبيقك يحتاج إلى مكان لوضع المحتوى الذي يقدمه المسار.

هذا هو ng-view بثلاث طرق مختلفة في التطبيق.

يمكن تضمين تعليمات ng-view تعليمات

مثال

<div ng-view></div>

جرب بنفسك

مثال

<ng-view></ng-view>

جرب بنفسك

مثال

<div class="ng-view"></div>

جرب بنفسك

يمكن لمتطبيق أن يكون لديه ng-view تعليمات، التي ستكون مكانًا مؤقتًا لجميع الرؤى التي يقدمها هذا المسار.

$routeProvider

استخدام $routeProvider، يمكنك تعريف الصفحة التي تظهر عند النقر على الرابط.

مثال

تعريف $routeProvider

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/london", {
    templateUrl : "london.htm"
  })
  .when("/paris", {
    templateUrl : "paris.htm"
  });
});

جرب بنفسك

باستخدام تطبيق config method definition $routeProvider، سيتم تنفيذ ما تم تعريفه في config الوظائف المسجلة في

مدير

استخدام $routeProvider، يمكنك أيضًا تعريف مدير لكل "رؤية".

مثال

إضافة مدير:

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/london", {
    templateUrl : "london.htm",
    controller : "londonCtrl"
  })
  .when("/paris", {
    templateUrl : "paris.htm",
    controller : "parisCtrl"
  });
});
app.controller("londonCtrl", function ($scope) {
  $scope.msg = ".أحب لندن";
});
app.controller("parisCtrl", function ($scope) {}}
  $scope.msg = "I love Paris";
});

جرب بنفسك

"london.htm" و "paris.htm" هي ملفات HTML عادية، يمكنك إضافة تعبيرات AngularJS فيها، مثل أجزاء أخرى من تطبيق AngularJS.

هذه الملفات تبدو هكذا:

london.htm

<h1>لندن</h1>
<h3>لندن هي عاصمة إنجلترا.</h3>
<p>هي أكثر المدن سكانًا في المملكة المتحدة، ويبلغ عدد سكان منطقة العاصمة أكثر من 13 مليون نسمة.</p>
<p>{{msg}}</p>

paris.htm

<h1>باريس</h1>
<h3>باريس عاصمة فرنسا.</h3>
<p>منطقة باريس هي واحدة من أكبر مراكز السكان في أوروبا، ويبلغ عدد السكان فيها أكثر من 12 مليون نسمة.</p>
<p>{{msg}}</p>

النموذج

في المثال السابق، كنا في طريقة $routeProvider.when تم استخدام طريقة templateUrl. الخصائص.

يمكنك أيضًا استخدام الخصائص template. الخصائص، التي تسمح لك بكتابة HTML مباشرة في قيمة الخاصية، بدلاً من الاستعانة بالصفحة.

مثال

كتابة النموذج:

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    template : "<h1>Main</h1><p>انقر على الروابط لتغيير هذا المحتوى</p>"
  })
  .when("/banana", {
    template : "<h1>البانان</h1><p>تحتوي البنات على حوالي 75% من الماء.</p>"
  })
  .when("/tomato", {
    template : "<h1>البطاطا الحلوة</h1><p>تحتوي البطاطا الحلوة على حوالي 95% من الماء.</p>"
  });
});

جرب بنفسك

طريقة otherwise.

في المثال السابق، استخدمنا $routeProvider طريقة when.

يمكنك أيضًا استخدام otherwise عندما لا تتطابق أي مسار آخر، يصبح المسار الافتراضي.

مثال

إذا لم يتم النقر على رابط "Banana" أو رابط "Tomato"، أخبرهم:

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/banana", {
    template : "<h1>البانان</h1><p>تحتوي البنات على حوالي 75% من الماء.</p>"
  })
  .when("/tomato", {
    template : "<h1>البطاطا الحلوة</h1><p>تحتوي البطاطا الحلوة على حوالي 95% من الماء.</p>"
  })
  .otherwise({
    template : "<h1>لا شيء</h1><p>لم يتم اختيار أي شيء</p>"
  });
});

جرب بنفسك