Angular state.go 関数

Muhammad Adil 2023年1月30日
  1. Angular の UI-Router とは
  2. Angular での UI-Router の $state.go 関数とは
Angular state.go 関数

状態は、Web アプリケーションを構築するための非常に重要な概念であり、AngularJS のコア機能の 1つです。AngularJS フレームワークは、開発者が双方向のデータバインディングとイベント処理を通じて状態を管理するのに役立ちます。

この記事では、Angular の state.go 関数について説明します。

Angular の UI-Router とは

UI-Router は、シングルページアプリケーションのルーティングとナビゲーションを提供します。

これは、AngularJS の新しいルーターモジュールを導入する前に URL の処理とナビゲーションに使用されていた AngularJS の $route サービスの制限に対処するために作成されたオープンソースプロジェクトです。

UI-Router を使用して、ルーティング、ナビゲーション、ディープリンクなどの組み込み機能では利用できない機能を開発できます。

名前付きプロパティのネストとビューは、ngRoute では使用できません。これにより、状態ベースの URL を使用して UI レンダリングインターフェイスを構築できます。

また、同じページで多くのビューを使用できるようになり、ビューの有用性が向上します。UI-Router は、動的な Web アプリケーションを管理するための素晴らしいツールです。

Angular での UI-Router の $state.go 関数とは

Angular には、ある状態から次の状態にデータを渡す方法がたくさんあります。たとえば、ng-model というカスタム HTML 属性を使用できます。また、ng-click というカスタムイベントを使用することもできます。

ただし、$state.go は、オブジェクトをある状態から次の状態に渡すための最良の方法です。これは、将来、さまざまな Angular プロジェクトで作業したい他の人にとって、冗長性が低く、簡単だからです。

$state.go の構文を以下に示します。

$state.go('destination.state');

Angular の $state.go$location.path の違い

$state.go は、アプリケーションの現在の状態を反映するように URL を更新するようにビューに指示する AngularJS ディレクティブです。このディレクティブは、現在のページから移動せずに URL を変更するために使用されます。

$location.path は、アプリケーションの現在の場所を反映するように URL を更新するようにビューに指示する AngularJS ディレクティブです。このディレクティブは、URL を変更して特定のページから移動するために使用されます。

新しい Angular 開発者にとって、目標が同じであるときに、異なる状況で両方を利用する理由を理解するのは難しいかもしれません。

$location サービスを使用してロケーションオブジェクトを管理できます。UI-router モジュールには、複雑な方法でルートを管理するのに役立つ $state サービスが含まれています。ui-router を使用して状態とルートを管理するには、$state サービスのみを使用してください。

$state.go の例について説明して、理解を深めましょう。

Typescript コード:

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

app.config(['$stateProvider',function($stateProvider){
  $stateProvider
    .state('main',{
      url: '/',
      templateUrl:"main.html",
      controller: 'Demo',
    })
    .state('Roll',{
      url: '/Roll',
      template:"<p> Saved</p>"
    })

  }]);

  app.config(['$urlRouterProvider',function($urlRouterProvider){
    $urlRouterProvider.otherwise('/');
  }]);
app.controller('Demo', ['$scope', '$http', '$state'
  ,function($scope, $http, $state){
    $scope.user = { RollNumber : "1234" }
    $scope.save = function(){
      $http.get("dummy.json", { params : $scope.user } )
      .success(function(data){
        $state.go("Roll");
      })
    }
  }]);

HTML コード:

<!DOCTYPE html>
<html  ng-app="myApp">

  <head>
    <script data-require="angular.js@1.3.0-beta.5" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
    <script data-require="ui-router@*" data-semver="0.2.11" src="https://rawgit.com/angular-ui/ui-router/0.2.10/release/angular-ui-router.js"></script>
    <script data-require="lodash.js@*" data-semver="2.4.1" src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <script src="app.js"></script>
  </head>

  <body>
    <div ui-view=""></div>
  </body>

</html>

ここをクリックして、コードのライブデモンストレーションを確認してください。

著者: Muhammad Adil
Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook