AngularJS ব্যবহার করে অন্য পৃষ্ঠায় কীভাবে পুনঃনির্দেশ করবেন?


171

আমি একটি সার্ভিস ফাইলে কার্যকারিতা সম্পাদনের জন্য এজাক্স কলটি ব্যবহার করছি এবং যদি প্রতিক্রিয়া সফল হয় তবে আমি পৃষ্ঠাটি অন্য url এ পুনর্নির্দেশ করতে চাই। বর্তমানে, আমি সাধারণ জেএস "উইন্ডো.লোকেশন = প্রতিক্রিয়া ['বার্তা'];" ব্যবহার করে এটি করছি। তবে আমার এটি অ্যাংুলারজেড কোড দিয়ে প্রতিস্থাপন করতে হবে। আমি স্ট্যাকওভারফ্লোতে বিভিন্ন সমাধান দেখেছি, তারা $ অবস্থান ব্যবহার করেছে। তবে আমি কৌনিক এ নতুন এবং এটি প্রয়োগ করতে সমস্যা হচ্ছে।

$http({
            url: RootURL+'app-code/common.service.php',
            method: "POST",
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            dataType: 'json',
            data:data + '&method=signin'

        }).success(function (response) {

            console.log(response);

            if (response['code'] == '420') {

                $scope.message = response['message'];
                $scope.loginPassword = '';
            }
            else if (response['code'] != '200'){

                $scope.message = response['message'];
                $scope.loginPassword = '';
            }
            else {
                window.location = response['message'];
            }
            //  $scope.users = data.users;    // assign  $scope.persons here as promise is resolved here
        })

2
এজন্য আপনাকে কৌণিক ব্যবহারের দরকার কেন? কোন নির্দিষ্ট কারণ? ডকুমেন্ট.লোকেশন হ'ল সঠিক উপায় এবং সম্ভবত কৌণিক
উপায়ের

উত্তর:


229

আপনি কৌণিক ব্যবহার করতে পারেন $window:

$window.location.href = '/index.html';

একটি কনটোলারের ব্যবহারের উদাহরণ:

(function () {
    'use strict';

    angular
        .module('app')
        .controller('LoginCtrl', LoginCtrl);

    LoginCtrl.$inject = ['$window', 'loginSrv', 'notify'];

    function LoginCtrl($window, loginSrv, notify) {
        /* jshint validthis:true */
        var vm = this;
        vm.validateUser = function () {
             loginSrv.validateLogin(vm.username, vm.password).then(function (data) {          
                if (data.isValidUser) {    
                    $window.location.href = '/index.html';
                }
                else
                    alert('Login incorrect');
            });
        }
    }
})();

1
আমি $ window.location.href ব্যবহার করেছি তবে এটি পূর্বনির্ধারিত ফাংশন $ window.location এর ত্রুটি দেয়। এর জন্য কি আমার কোনও নির্ভরতা অন্তর্ভুক্ত করা দরকার?
ফরজাদ হাসান

3
না, তবে আপনার নিয়ামকটিতে আপনাকে $ উইন্ডো ইনজেকশন করতে হতে পারে। আমার সম্পাদিত উত্তর দেখুন।
ইওল্ড স্টিগার

2
এর window.location.href $ window.location.href
জুনাইদ

3
@ ব্যবহারকারী 3623224 - এটি আসলে নয়;)
বেন

12
@ জুনাইদ উইন্ডো.লোকেশন.ইআরএফ হ'ল windowতিহ্যবাহী উইন্ডো অবজেক্টের জন্য, $ window.location.href AngularJS $ উইন্ডো অবজেক্টের জন্য, এখানে: ডকসস.আঙ্গুলারজ.স.আর.ইপি
মাইকেল বিটসন

122

আপনি বিভিন্ন উপায়ে একটি নতুন URL এ পুনঃনির্দেশ করতে পারেন।

  1. আপনি উইন্ডোটি ব্যবহার করতে পারেন যা পৃষ্ঠাটি রিফ্রেশও করবে
  2. আপনি একক পৃষ্ঠার অ্যাপ্লিকেশনটির "ভিতরে থাকতে" এবং $ অবস্থান ব্যবহার করতে পারেন যে ক্ষেত্রে আপনি $location.path(YOUR_URL);বা এর মধ্যে নির্বাচন করতে পারেন $location.url(YOUR_URL);। সুতরাং 2 পদ্ধতির মধ্যে মূল পার্থক্য হ'ল $location.url()প্যারামিটারগুলিও প্রভাবিত $location.path()করে না।

আমি ডক্সটি পড়ার পরামর্শ দিচ্ছি $locationএবং $windowযাতে আপনি তাদের মধ্যে পার্থক্য সম্পর্কে আরও ভাল উপলব্ধি অর্জন করতে পারেন।


15

$location.path('/configuration/streaming'); এটি কাজ করবে ... নিয়ামক মধ্যে অবস্থান পরিষেবা ইনজেকশন


13

আমি নতুন পৃষ্ঠায় পুনঃনির্দেশ করতে নীচের কোডটি ব্যবহার করেছি

$window.location.href = '/foldername/page.html';

এবং আমার নিয়ামক ফাংশনে ইনজেকশন করা $ উইন্ডো অবজেক্ট।


12

এটি আপনাকে সাহায্য করতে পারে !!

AngularJs কোড-নমুনা

var app = angular.module('app', ['ui.router']);

app.config(function($stateProvider, $urlRouterProvider) {

  // For any unmatched url, send to /index
  $urlRouterProvider.otherwise("/login");

  $stateProvider
    .state('login', {
      url: "/login",
      templateUrl: "login.html",
      controller: "LoginCheckController"
    })
    .state('SuccessPage', {
      url: "/SuccessPage",
      templateUrl: "SuccessPage.html",
      //controller: "LoginCheckController"
    });
});

app.controller('LoginCheckController', ['$scope', '$location', LoginCheckController]);

function LoginCheckController($scope, $location) {

  $scope.users = [{
    UserName: 'chandra',
    Password: 'hello'
  }, {
    UserName: 'Harish',
    Password: 'hi'
  }, {
    UserName: 'Chinthu',
    Password: 'hi'
  }];

  $scope.LoginCheck = function() {
    $location.path("SuccessPage");
  };

  $scope.go = function(path) {
    $location.path("/SuccessPage");
  };
}

6

AngularJS এ আপনি নীচের মত ব্যবহার করে আপনার ফর্মটি (জমা দেওয়ার সময়) অন্য পৃষ্ঠায় পুনঃনির্দেশ করতে পারেন window.location.href='';:

postData(email){
    if (email=='undefined') {
      this.Utils.showToast('Invalid Email');
    } else {
      var origin = 'Dubai';
      this.download.postEmail(email, origin).then(data => { 
           ...
      });
      window.location.href = "https://www.thesoftdesign.com/";      
    }
  }

কেবল এটি চেষ্টা করুন:

window.location.href = "https://www.thesoftdesign.com/"; 

4

আমি কৌণিক অ্যাপ্লিকেশনটিতে পৃথক পৃষ্ঠায় পুনঃনির্দেশ করার ক্ষেত্রেও সমস্যার মুখোমুখি হয়েছি

$windowওয়াল্ড তার উত্তরে যে পরামর্শ দিয়েছে তাতে আপনি যোগ করতে পারেন বা আপনি যদি যোগ করতে না চান তবে $windowকেবল একটি সময়সীমা যুক্ত করুন এবং এটি কার্যকর হবে!

setTimeout(function () {
        window.location.href = "http://whereeveryouwant.com";
    }, 500);

2

আমি ব্যবহার করার সহজ উপায়

app.controller("Back2Square1Controller", function($scope, $location) {
    window.location.assign(basePath + "/index.html");
});

2

এটি করার একটি ভাল উপায় হ'ল go state.go ('statename', {params ...}) ব্যবহারের ক্ষেত্রে ব্যবহারকারীর অভিজ্ঞতার জন্য দ্রুত এবং আরও বন্ধুত্বপূর্ণ যখন আপনি পুরো অ্যাপ্লিকেশন কনফিগারেশন এবং স্টাফগুলি পুনরায় লোড এবং বুটস্রেপ করতে না হয় don't

(function() {
    'use strict';

    angular
        .module('app.appcode')
        .controller('YourController', YourController);

    YourController.$inject = ['rootURL', '$scope', '$state', '$http'];

    function YourController(rootURL, $scope, $state, $http) {

        $http({
                url: rootURL + 'app-code/common.service.php',
                method: "POST",
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                dataType: 'json',
                data:data + '&method=signin'

            }).success(function (response) {
                if (response['code'] == '420') {

                    $scope.message = response['message'];
                    $scope.loginPassword = '';
                } else if (response['code'] != '200') {

                    $scope.message = response['message'];
                    $scope.loginPassword = '';
                } else {
                    // $state.go('home'); // select here the route that you want to redirect
                    $state.go(response['state']); // response['state'] should be a route on your app.routes
                }
            })
    }

});

// রুট

(function() {
    'use strict';

    angular
        .module('app')
        .config(routes);

    routes.$inject = [
        '$stateProvider',
        '$urlRouterProvider'
    ];

    function routes($stateProvider, $urlRouterProvider) {
        /**
         * Default path for any unmatched url
        */
        $urlRouterProvider.otherwise('/');

        $stateProvider
            .state('home', {
                url: '/',
                templateUrl: '/app/home/home.html',
                controller: 'Home'
            })
            .state('login', {
                url: '/login',
                templateUrl: '/app/login/login.html',
                controller: 'YourController'
            })
            // ... more routes .state
   }

})();

0
 (function () {
"use strict";
angular.module("myApp")
       .controller("LoginCtrl", LoginCtrl);

function LoginCtrl($scope, $log, loginSrv, notify) {

    $scope.validateUser = function () {
        loginSrv.validateLogin($scope.username, $scope.password)
            .then(function (data) {
                if (data.isValidUser) {
                    window.location.href = '/index.html';
                }
                else {
                    $log.error("error handler message");
                }
            })
    }
} }());

0

আপনি যদি কোনও লিঙ্ক ব্যবহার করতে চান তবে: এইচটিএমএলে রয়েছে:

<button type="button" id="btnOpenLine" class="btn btn-default btn-sm" ng-click="orderMaster.openLineItems()">Order Line Items</button>

টাইপ স্ক্রিপ্ট ফাইল

public openLineItems() {
if (this.$stateParams.id == 0) {
    this.Flash.create('warning', "Need to save order!", 3000);
    return
}
this.$window.open('#/orderLineitems/' + this.$stateParams.id);

}

আমি আশা করি আপনি এই উদাহরণটি সহায়ক হিসাবে দেখবেন কারণ এটি অন্যান্য উত্তরগুলির সাথে আমার জন্য ছিল।


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