angularjs - বর্তমান অবস্থা পুনরায় লোড হচ্ছে-তথ্য রিফ্রেশ করুন




angular-ui angular-ui-router (12)

আমি কৌণিক UI রাউটার ব্যবহার করছি এবং বর্তমান অবস্থাটি পুনরায় লোড করতে এবং বর্তমান তথ্যটির জন্য সমস্ত তথ্য রিফ্রেশ / কন্ট্রোলারগুলিকে পুনরায় চালাতে চাই।

আমি 3 রাষ্ট্র মাত্রা আছে: directory.organisations.details

directory.organisations প্রতিষ্ঠানের একটি তালিকা সহ একটি টেবিল রয়েছে। আইটেমটির আইডি পাস করে $ StateParams সহ টেবিলে লোড করা ডিরেক্টরি.অরগানাইজেশান ডেটাতে ক্লিক করে। তাই বিস্তারিত বিবৃতিতে আমি এই আইটেমটি সম্পর্কে বিস্তারিত লোড, তাদের সম্পাদনা এবং তারপর ডেটা সংরক্ষণ করুন। সব ঠিক আছে।

এখন আমি এই অবস্থা পুনরায় লোড এবং সব তথ্য রিফ্রেশ করতে হবে।

আমি চেষ্টা করেছি:

 $state.transitionTo('directory.organisations');

কোনটি মূল পৃষ্ঠায় যায় তবে নিয়ামকটি পুনরায় লোড না করে, আমি অনুমান করি কারণ পথটি পরিবর্তিত হয়নি। আদর্শভাবে আমি ডিরেক্টরির. organisations.details অবস্থাতে থাকতে চাই এবং পিতামাতার সমস্ত তথ্য রিফ্রেশ করতে চাই।

আমি চেষ্টা করেছি:

$state.reload()

আমি এটিকে API.WIKI এ $ state.reload এর জন্য দেখেছি "(এখন কন্ট্রোলারদের সাথে বাগ সংশোধন করা হচ্ছে, শীঘ্রই ফিক্সিং করা হবে)।"

কোন সাহায্য প্রশংসা করা হবে?


@ হোল্যান্ড রিসলির উত্তর এখন ইইউ-রাউটারে একটি API হিসাবে পাওয়া যায়।

$state.reload();

বর্তমান অবস্থা পুনরায় লোড বাধ্যকারী একটি পদ্ধতি। সমস্ত সমাধান পুনরায় সমাধান করা হয়, কন্ট্রোলার reinstantiated, এবং ঘটনা পুনরায় বহিস্কার।

http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state


ionic কাঠামোর জন্য

$state.transitionTo($state.current, $state.$current.params, { reload: true, inherit: true, notify: true });//reload

$stateProvider.
  state('home', {
    url: '/',
    cache: false, //required

https://github.com/angular-ui/ui-router/issues/582


আপনি @ রোহন উত্তরটি https://.com/a/23609343/3297761 ব্যবহার করতে পারেন

কিন্তু যদি আপনি একটি দৃশ্য পরিবর্তন পরে প্রতিটি নিয়ামক reaload করতে চান তাহলে আপনি ব্যবহার করতে পারেন

myApp.config(function($ionicConfigProvider) { $ionicConfigProvider.views.maxCache(0); ... }

আমার সমস্যাটি আমার মাথা নষ্ট করে ফেলেছিল, আমার রাউটিংটি একটি JSON ফাইল থেকে পড়ে এবং তারপর একটি নির্দেশনায় খাওয়ানো হয়। আমি একটি ui-state এ ক্লিক করতে পারি তবে আমি পৃষ্ঠাটি পুনরায় লোড করতে পারিনি। তাই আমার একটি collegue এটি সম্পর্কে একটি চমৎকার সামান্য কৌশল দেখিয়েছেন।

  1. আপনার তথ্য পান
  2. আপনার অ্যাপ্লিকেশন কনফিগারেশন একটি লোড অবস্থা তৈরি করুন
  3. আপনি মূলশব্দ যেতে চান রাষ্ট্র সংরক্ষণ করুন।
  4. আপনার app.run মধ্যে আপনার অবস্থান "/ লোড হচ্ছে" সেট করুন
  5. লোডিং কন্ট্রোলারের মধ্যে রাউটিং প্রতিশ্রুতিটি সমাধান করুন এবং তারপরে আপনার উদ্দেশ্যে লক্ষ্য নির্ধারণ করুন।

এটা আমার জন্য কাজ করেছে।

আশা করি এটা সাহায্য করবে


আমি জানি উত্তরগুলির একটি গুচ্ছ আছে কিন্তু সম্পূর্ণ পৃষ্ঠা রিফ্রেশ না করেই আমি এটি করতে সবচেয়ে ভাল উপায়টি যে রুটটি রিফ্রেশ করতে চাই সেটি আমি তৈরি করতে রাস্তাটিকে ডামি প্যারামিটার তৈরি করতে এবং তারপর যখন আমি রুট কল করি ডামি প্যারামিটার র্যান্ডম সংখ্যা।

            .state("coverage.check.response", {
                params: { coverageResponse: null, coverageResponseId: 0, updater: 1 },
                views: {
                    "coverageResponse": {
                        templateUrl: "/Scripts/app/coverage/templates/coverageResponse.html",
                        controller: "coverageResponseController",
                        controllerAs: "vm"
                    }
                }
            })

এবং তারপর যে রুট কল

$state.go("coverage.check.response", { coverageResponse: coverage, updater: Math.floor(Math.random() * 100000) + 1 });

একটি কবজ মত কাজ করে এবং সমাধান পরিচালনা করে।


এই সমাধান AngularJS V.1.2.2 কাজ করে:

$state.transitionTo($state.current, $stateParams, {
    reload: true,
    inherit: false,
    notify: true
});

কৌণিক v1.2.26 জন্য, উপরের কাজ কেউ। রাষ্ট্রের পুনরায় লোড করার জন্য উপরে উল্লেখিত পদ্ধতিগুলিকে কল করা একটি এনজি-ক্লিককে দুবার ক্লিক করতে হবে।

তাই আমি $ timeout ব্যবহার করে 2 ক্লিক emulating শেষ পর্যন্ত।

$provide.decorator('$state',
        ["$delegate", "$stateParams", '$timeout', function ($delegate, $stateParams, $timeout) {
            $delegate.forceReload = function () {
                var reload = function () {
                    $delegate.transitionTo($delegate.current, angular.copy($stateParams), {
                        reload: true,
                        inherit: true,
                        notify: true
                    })
                };
                reload();
                $timeout(reload, 100);
            };
            return $delegate;
        }]);

যদি আপনি আইওনিক ভি 1 ব্যবহার করেন তবে আইওনিকের $ ionicConfigProvider অংশ হিসাবে টেমপ্লেট ক্যাশিং সক্ষম করার পরে উপরে সমাধান কাজ করবে না।

তার জন্য কাজটি একটু হ্যাকি - আপনাকে ionic.angular.js ফাইলে ক্যাশে 0 সেট করতে হবে:

$ionicConfigProvider.views.maxCache(0);

যে চূড়ান্ত সমাধান হবে। (@ হোলান_ রিসলির পোস্ট দ্বারা অনুপ্রাণিত)

'use strict';

angular.module('app')

.config(function($provide) {
    $provide.decorator('$state', function($delegate, $stateParams) {
        $delegate.forceReload = function() {
            return $delegate.go($delegate.current, $stateParams, {
                reload: true,
                inherit: false,
                notify: true
            });
        };
        return $delegate;
    });
});

এখন, যখনই আপনাকে পুনরায় লোড করতে হবে তখন কেবল কল করুন:

$state.forceReload();

সবকিছু আমার জন্য ব্যর্থ হয়েছে। যে জিনিসটি কাজ করে ... সেটি ক্যাশ-ভিউ = "মিথ্যা" ভিউতে যোগ করছে যা আমি এটিতে পুনরায় লোড করতে চাই।

এই সমস্যা থেকে https://github.com/angular-ui/ui-router/issues/582


সম্ভবত ক্লিনার পদ্ধতি নিম্নলিখিত হতে হবে:

<a data-ui-sref="directory.organisations.details" data-ui-sref-opts="{reload: true}">Details State</a>

আমরা শুধুমাত্র এইচটিএমএল থেকে রাষ্ট্র পুনরায় লোড করতে পারেন।


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




angular-ui-router