AngularJs: পৃষ্ঠাটি পুনরায় লোড করুন


135
<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>

আমি পৃষ্ঠাটি পুনরায় লোড করতে চাই। কিভাবে আমি এটি করতে পারব?

উত্তর:


265

আপনি পরিষেবার reloadপদ্ধতিটি ব্যবহার করতে পারেন $route$routeআপনার নিয়ামক ইনজেক্ট করুন এবং তারপরে reloadRouteআপনার একটি পদ্ধতি তৈরি করুন $scope

$scope.reloadRoute = function() {
   $route.reload();
}

তারপরে আপনি এটি লিঙ্কে এটি ব্যবহার করতে পারেন:

<a ng-click="reloadRoute()" class="navbar-brand" title="home"  data-translate>PORTAL_NAME</a>

এই পদ্ধতিটির ফলে বর্তমান রুটটি পুনরায় লোড হবে। আপনি যদি একটি সম্পূর্ণ রিফ্রেশ করতে চান তবে আপনি ইনজেকশন $windowএবং এটি ব্যবহার করতে পারেন:

$scope.reloadRoute = function() {
   $window.location.reload();
}


পরে সম্পাদনা (ইউআই-রাউটার):

জেমসএডিএডওয়ার্ডস এবং ডানক তাদের উত্তরে যেমন উল্লেখ করেছেন, আপনি যদি কৌনিক-ইউআই / ইউআই-রাউটার ব্যবহার করছেন তবে আপনি বর্তমান রাষ্ট্র / রুটটি পুনরায় লোড করতে নীচের পদ্ধতিটি ব্যবহার করতে পারেন। এর $stateপরিবর্তে কেবল ইনজেক্ট করুন $routeএবং তারপরে আপনার কাছে রয়েছে:

$scope.reloadRoute = function() {
    $state.reload();
};

2
আপনি যদি পুনরায় লোডটি Angularise করতে মরিয়া হন তবে এটি একটি ভাল উত্তর।
স্পাইকিইপ

সমস্ত লিঙ্কে কোনও ক্রিয়া যুক্ত করার পরিবর্তে আমি কীভাবে বিশ্বব্যাপী এই আচরণটি পরিবর্তন করতে পারি
ওএমজিপিওপি

@ ওএমজিপিওপি সমস্ত লিঙ্কের জন্য বিশ্বব্যাপী ঠিক কী বলতে চাচ্ছেন?
আলেকজান্দ্রিন রস

মানে, সমস্ত লিঙ্কের জন্য আপনাকে এটি করা দরকার। সব লিঙ্কের জন্য একবার কনফিগার করা সম্ভব?
ওএমজিপিওপ

@ আলেকজান্দ্রিন এই আমাকে দেওয়ার জন্য নীচের [$ রুটস্কোপ: ইনফডিগ] 10 $ ডাইজেস্ট () পুনরাবৃত্তি পৌঁছেছে। গর্ভপাত!
বর্ণমালা

52

windowবিষয়টিকে সহজ পরীক্ষার জন্য এবং উপহাসের$window জন্য পরিষেবার মাধ্যমে উপলব্ধ করা হয়েছে , আপনি এরকম কিছু দিয়ে যেতে পারেন:

$scope.reloadPage = function(){$window.location.reload();}

এবং :

<a ng-click="reloadPage"  class="navbar-brand" title="home"  data-translate>PORTAL_NAME</a>

পার্শ্ব নোট হিসাবে, আমি মনে করি না $ রুট.রেলোড () আসলে পৃষ্ঠাটি পুনরায় লোড করে তবে কেবল রুট


2
আমি $windowপরিবর্তে ব্যবহার করার পরামর্শ দিচ্ছি window
জেরোইন

আপনার অবদানের জন্য ধন্যবাদ। আপনি কেন আমাদের ব্যাখ্যা করবেন?
ফ্লোরিয়ান এফ।

1
অস্ত্রোপচার. এটি ডক্স দ্বারা সর্বোত্তমভাবে ব্যাখ্যা করা হয়েছে$window , মূলত এটি কারণ reloadPageযখন এটি ব্যবহার করা হয় (ভাল) পরীক্ষামূলক হয় $window
জেরোইন

19
 location.reload(); 

কৌতুক করে।

<a ng-click="reload()">

$scope.reload = function()
{
   location.reload(); 
}

রুট বা কোনও কিছুর প্রয়োজন নেই কেবল সাদামাটা পুরানো জেএস


2
সরলতা পছন্দ!
শান ডি ওয়েট

14

আলেকজান্দ্রিনের জবাবের মতো, তবে $ রুটের পরিবর্তে $ রাষ্ট্র ব্যবহার করুন:

(জিমডেভের এসও উত্তর থেকে এখানে ।)

$scope.reloadState = function() {
   $state.go($state.current, {}, {reload: true});
}

<a ng-click="reloadState()" ... 

9

অ্যাঙ্গুলারগুলি যদি আরও উন্নত ইউআই-রাউটার ব্যবহার করে থাকে যা আমি অবশ্যই সুপারিশ করি তবে আপনি এখন সহজভাবে ব্যবহার করতে পারেন:

$state.reload();

যা মূলত ডানকের উত্তর হিসাবে একই কাজ করছে।


5

অসীম লুপ এড়াতে আমার সমাধানটি ছিল অন্য একটি রাজ্য তৈরি করা যা পুনঃনির্দেশটি তৈরি করেছে:

$stateProvider.state('app.admin.main', {
    url: '/admin/main',
    authenticate: 'admin',
    controller: ($state, $window) => {
      $state.go('app.admin.overview').then(() => {
        $window.location.reload();
      });
    }
  });

2

কৌণিক 2+

আমি কৌনিক 2+ অনুসন্ধান করার সময় এটি পেয়েছি, সুতরাং এখানে উপায়:

$window.location.reload();

1
এটি উপায়, এর জাভাস্ক্রিপ্ট উপায় কৌনিক সঙ্গে নির্দিষ্ট নয়।
নিতিন যাদব

1

এটি কেবলমাত্র ব্যবহারের পক্ষে যথেষ্ট সহজ $route.reload()(আপনার নিয়ামকটিতে $ রুটটি ইনজেকশন করতে ভুলবেন না) তবে উদাহরণ থেকে আপনি "এনজি-href" এর পরিবর্তে "href" ব্যবহার করতে পারেন:

<a href=""  class="navbar-brand" title="home"  data-translate>PORTAL_NAME</a>

অ্যাংুলার {{}} of ট্যাগগুলির বিষয়বস্তু প্রতিস্থাপন করার আগে ব্যবহারকারীকে ক্লিক করার কারণে অবৈধ লিঙ্কগুলি থেকে তাদের রক্ষা করতে আপনার কেবল এনজি-হ্রেফ ব্যবহার করতে হবে।


$ রুটটি ng.route.IRouteService এর অংশ ??
ক্র্যাকার

1

কৌণিক 1.5 তে - উপরোক্ত কিছু সমাধানের পরে কেবলমাত্র কোনও পৃষ্ঠা পুনরায় রিফ্রেশ না করে কেবল ডেটা পুনরায় লোড করতে চাইছে, আমার সঠিকভাবে ডেটা লোড করতে সমস্যা হয়েছিল had যদিও আমি লক্ষ করেছি, যখন আমি অন্য কোনও রুটে যাই এবং তারপরে আমি স্রোতে ফিরে আসি, সবকিছু ঠিকঠাক হয়, তবে যখন আমি কেবল বর্তমান রুটটি ব্যবহার করে পুনরায় লোড করতে চাই $route.reload(), তখন কিছু কোড সঠিকভাবে কার্যকর হয় না। তারপরে আমি নিম্নলিখিত উপায়ে বর্তমান রুটে পুনঃনির্দেশ করার চেষ্টা করেছি:

$scope.someFuncName = function () {
    //go to another route
    $location.path('/another-route');
};

এবং মডিউল কনফিগারেশনে, অন্যটি যুক্ত করুন when:

.config(['$routeProvider', function($routeProvider) {
     $routeProvider.when('/first-page', {
         templateUrl: '/first-template',
         controller: 'SomeCtrl'
     }).when('/another-route', {//this is the new "when"
         redirectTo: '/first-page'
     });
}])

এবং এটি আমার পক্ষে ঠিক কাজ করে। এটি পুরো পৃষ্ঠাটি রিফ্রেশ করে না, তবে কেবলমাত্র বর্তমান নিয়ামক এবং টেমপ্লেটটিকে পুনরায় লোডের কারণ করে। আমি জানি এটি কিছুটা হ্যাকি, তবে এটিই ছিল আমার একমাত্র সমাধান।


একটি সহজ উপায় হতে পারে var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });; এলোমেলো রুট তৈরি করার দরকার নেই। তবে আপনার জন্য কী কোডটি পুনরায় মূল্যায়ন করে না তা দেখতে আকর্ষণীয় হবে। দেখে মনে হচ্ছে এটি এমনকি redirectToগুলি এবং সাধারণ resolveক্রিয়াকলাপগুলি পুনরায়$route.reload() সম্পাদন করে (কনসোল.লগের দিকে দেখুন)।
হ্যাশব্রাউন

1
<a title="Pending Employee Approvals" href="" ng-click="viewPendingApprovals(1)">
                    <i class="fa fa-user" aria-hidden="true"></i>
                    <span class="button_badge">{{pendingEmployeeApprovalCount}}</span>
                </a>

এবং নিয়ামক মধ্যে

 $scope.viewPendingApprovals = function(type) {
                if (window.location.hash.substring(window.location.hash.lastIndexOf('/') + 1, window.location.hash.length) == type) {
                    location.reload();
                } else {
                    $state.go("home.pendingApproval", { id: sessionStorage.typeToLoad });
                }
            };

এবং রুট ফাইল

.state('home.pendingApproval', {
        url: '/pendingApproval/:id',
        templateUrl: 'app/components/approvals/pendingApprovalList.html',
        controller: 'pendingApprovalListController'
    })

সুতরাং, যদি ইউআরএল-এ পাস করা আইডিটি অ্যাঙ্করটি ক্লিক করে কল করা ফাংশন থেকে আসা হিসাবে একই হয়, তবে কেবল পুনরায় লোড করুন, অন্যথায় অনুরোধ করা রুটটি অনুসরণ করুন।

দয়া করে আমাকে এই উত্তরটি উন্নত করতে সহায়তা করুন, যদি এটি সাহায্য করে। যাইহোক, পরামর্শ স্বাগত।


পৃষ্ঠাটি কেন পুনরায় লোড হচ্ছে না তা নির্ধারণ করতে আমার এক মাস সময় লেগেছে
স্যাম

0

এটি সরল জাভাস্ক্রিপ্টে উইন্ডো অবজেক্টটির পুনরায় লোড () পদ্ধতিতে কল করে কাজটি করা যেতে পারে

window.location.reload();


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