AngularJS - আমি কীভাবে একটি পূর্ণ পৃষ্ঠা লোড দিয়ে পুনর্নির্দেশ করতে পারি?


94

আমি একটি পুনর্নির্দেশ করতে চাই যা একটি পূর্ণ পৃষ্ঠা পুনরায় লোড করে যাতে পৃষ্ঠাটি লোড হয়ে গেলে আমার ওয়েব সার্ভার থেকে কুকিগুলি রিফ্রেশ হয়। window.location = "/#/Next"এবং window.location.href = "/#/Next"কাজ করে না, তারা একটি কৌণিক রুট করে যা সার্ভারে আঘাত করে না।

একটি কৌণিক নিয়ামকের মধ্যে একটি সম্পূর্ণ সার্ভার অনুরোধ করার সঠিক উপায় কী?


8
আপনি কি কখনও এই সমাধান করেছেন?
সুপারজোজ

7
আপনি কি কখনও এই সমাধান করেছেন?
নোলউইনিগ

6
আপনি কি কখনও এই সমাধান করেছেন?
ড্যান বিউলিউ

5
আপনি কি কখনও এই সমাধান করেছেন?
আমার স্ট্যাক

4
আপনি কি কখনও এই সমাধান করেছেন?
শাহজাইন আলি

উত্তর:


184

জন্য <a>ট্যাগ :

target="_self"আপনার আপনার <a>ট্যাগ আটকে রাখা প্রয়োজন

তিনটি ক্ষেত্রে রয়েছে যেখানে অ্যাংুলারজেএস সম্পূর্ণ পৃষ্ঠা পুনরায় লোড সম্পাদন করবে:

  • টার্গেট উপাদান রয়েছে এমন লিঙ্কগুলি
    উদাহরণ:<a href="https://stackoverflow.com/ext/link?a=b" target="_self">link</a>
  • সম্পূর্ণ লিঙ্কগুলি যা একটি ভিন্ন ডোমেনে যায়
    উদাহরণ:<a href="http://angularjs.org/">link</a>
  • '/' দিয়ে শুরু হওয়া লিঙ্কগুলি যখন বেসকে সংজ্ঞায়িত করা হয় তখন ভিন্ন বেস পথের দিকে নিয়ে যায়
    উদাহরণ:<a href="https://stackoverflow.com/not-my-base/link">link</a>

জাভাস্ক্রিপ্ট ব্যবহার :

$locationসেবা আপনি পরিবর্তন URL টি করতে পারবেন; এটি আপনাকে পৃষ্ঠাটি পুনরায় লোড করার অনুমতি দেয় না। যখন আপনি URL পরিবর্তন এবং একটি ভিন্ন পৃষ্ঠায় পৃষ্ঠা বা নেভিগেট পুনরায় লোড করার প্রয়োজন, একটি নিম্ন স্তরের API ব্যবহার করুন: $window.location.href

দেখা:


15
। window.location.href একই কাজ করে যা উইন্ডো.লোকেশন.হিরফ করে। আমি বেশ নিশ্চিত $ উইন্ডোটি উইন্ডোটির জন্য কেবল একটি মোড়ানোর পরিষেবা। উভয় উপায়েই পুরো পৃষ্ঠা রিফ্রেশের পরিবর্তে একটি কৌণিক রুট করে।
মাইক পাটেরাস

4
। window.location.href অবশ্যই একটি পূর্ণ পৃষ্ঠা রিফ্রেশের কারণ, আমি এটি আমার অ্যাপ্লিকেশনটিতে করছি।
jszobody

4
আমি একই জিনিস পড়েছি। ক্রোমের বর্তমান সংস্করণে কাজ করে না। এটি একটি কৌণিক রুট করে।
মাইক পাটেরাস

4
সিডিএন থেকে 1.0.6। আমি এটি একটি $ http.post সাফল্যের কলব্যাকের মধ্যে করছি, যদি এটি গুরুত্বপূর্ণ তবে আমি কলব্যাকের বাইরে চেষ্টা করেছি এবং একই ফলাফল পেয়েছি। যদি আমি "/" এ পুনঃনির্দেশ করি (যার জন্য আমি একটি কৌণিক রুটও সংজ্ঞায়িত করেছি), এটি সম্পূর্ণ পৃষ্ঠা রিফ্রেশের সাথে কাজ করে, তবে "/ # / পরবর্তী" কেবল দর্শন পরিবর্তন করে।
মাইক পাটেরাস

5
<a href="..." target="_self">এটা আমার জন্য কাজ করেছে। ধন্যবাদ!
মাইকেল

33

আমাদের একই সমস্যা ছিল, জেএস কোড থেকে কাজ করা (যেমন এইচটিএমএল অ্যাঙ্কর থেকে নয়)। এইভাবেই আমরা এটি সমাধান করেছি:

  1. যদি প্রয়োজন হয় তবে পরিষেবার মাধ্যমে কার্যত বর্তমান URL টি পরিবর্তন করুন al $locationআপনার গন্তব্যটি যদি বর্তমান ইউআরএলটিতে কেবলমাত্র একটি বৈকল্পিক হয় তবে এটি সহায়ক হতে পারে যাতে আপনি $locationসাহায্যকারী পদ্ধতির সুবিধা নিতে পারেন । উদাহরণস্বরূপ আমরা $location.search(..., ...)একটি ক্যোরিস্ট্রিং প্যারামিটারের মান পরিবর্তন করতে দৌড়ে এসেছি ।

  2. $location.url()প্রয়োজনে বর্তমান ব্যবহার করে নতুন গন্তব্য URL তৈরি করুন । কাজ করার জন্য, এই নতুনটিকে স্কিমা, ডোমেন এবং পোর্টের পরে সমস্ত কিছু অন্তর্ভুক্ত করতে হয়েছিল। সুতরাং যেমন আপনি এখানে যেতে চান:

    http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?cल्লা=en

    তারপরে আপনার ইউআরএল সেট করা উচিত:

    var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';

    ( '/'পাশাপাশি নেতৃস্থানীয় )।

  3. নিম্ন স্তরে নতুন গন্তব্য URL অর্পণ করুন :$window.location.href = destinationUrl;

  4. পুনরায় লোড করুন, এখনও নিম্ন-স্তরে: $window.location.reload();


4
এটি আমার জন্য ক্রোম 38 এর সাথে কৌনিক 1.3.1 এ কাজ করে না I। উইন্ডো.লোকেশন.রেফের মান পরিবর্তন হয় না যখন আমি কোনও পথ বা একটি সম্পূর্ণ URL অর্পণ করি। আমার পক্ষে কেবল $ window.location.assign () কাজ করেছে।
ফেলিক্স

ফেলিক্সের মতো একই সমস্যা হ'ল
সোরেশ হাকামি

13

হিট এবং ট্রায়াল সেশনটি অনুসন্ধান এবং দেওয়ার পরে আমি প্রথমে ইউআরএলটি নির্দিষ্ট করে সমাধান করতে সক্ষম হয়েছি

$window.location.href = '/#/home/stats';

তারপরে পুনরায় লোড করুন

$window.location.reload();

এটি সমস্যার সমাধান করতে পারে বলে মনে হচ্ছে তবে ব্রাউজারে পিছনে এবং এগিয়ে ক্লিক করা অনেকগুলি অসঙ্গতি সৃষ্টি করবে।
লুইস্লিক্স

9

আমারও একই প্রশ্ন ছিল. আমি যখন ব্যবহার করি window.location, $window.locationবা এমনকি <a href="..." target="_self">রুটটি পৃষ্ঠাটি সতেজ করে না। সুতরাং ক্যাশেড পরিষেবাগুলি ব্যবহৃত হয় যা আমি আমার অ্যাপ্লিকেশনটিতে চাই না। রাউটিংয়ের পরে পৃষ্ঠাটি পুনরায় লোড করতে বাধ্য করার window.location.reload()পরে যোগ করে সমাধান করেছি window.location। এই পদ্ধতিটি যদিও পৃষ্ঠাটি দু'বার লোড করছে বলে মনে হচ্ছে। একটি নোংরা কৌশল হতে পারে, কিন্তু এটি কাজ করে। আমি এখন এটি এইভাবে:

  $scope.openPage = function (pageName) {
      window.location = '#/html/pages/' + pageName;
      window.location.reload();
  };

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.