it-swarm.asia

تعيين ngRoute رابط قاعدة لجميع الطرق

هل من الممكن إضافة رابط أساسي إلى جميع المسارات في AngularJS app؟ تغيير موقعه بشكل أساسي على الخادم (نوع من ، إذا كان ذلك منطقيًا ... لذلك لن يتم الوصول إليه عبر / ولكن عبر /something/).

لإضافة بعض السياق ، أحاول وضع Angular تطبيق موجود خلف بعض المصادقة بحيث يمكن الآن الوصول إلى التطبيق على العنوان ، قل http://mysite/secure بعد تسجيل الدخول بنجاح.

تكمن المشكلة في أنه إذا كان يتعين عليّ تحميل التطبيق على http://mysite/secure فهو يعمل بشكل جيد (من الواضح أن الخادم سيعمل على تقديم الصفحة الصحيحة) ، ولكن النقر فوق أي رابط سيؤدي إلى إعادة تحميل الصفحة وتوجيهها إلى http://mysite/#newpage بدلاً من http://mysite/secure/#newpage.

دون إضافة /secure/ إلى جميع المسارات وعنصر الارتباط هل هذا ممكن؟ هتاف ، آسف إذا لم يتم صياغتها بشكل جيد.

52
adamK

قد يساعد إعداد علامة <base> HTML5. من الوثائق هنا :

الروابط النسبية

تأكد من التحقق من جميع الروابط النسبية والصور والبرامج النصية وما إلى ذلك. يجب عليك إما تحديد قاعدة عنوان url في رأس ملف html الرئيسي (<base href="/my-base">) أو يجب عليك استخدام عناوين url المطلقة (تبدأ بـ /) في كل مكان لأنه سيتم حل عناوين url النسبية عناوين URL المطلقة باستخدام عنوان URL المطلق الأولي للوثيقة ، والذي يختلف غالبًا عن جذر التطبيق.

يُشجع بشدة تشغيل Angular التطبيقات مع تمكين واجهة برمجة تطبيقات History من جذر المستند نظرًا لأنه يهتم بجميع مشكلات الارتباط النسبي.

38
David Pope

يجب أن يحتوي موقع href الأساسي على /. فمثلا:

<base href="location" />

لن يعمل. يجب أن يكون بهذا التنسيق:

<base href="location/" />
38
Dennis Kiesel