2017-01-27 3 views
0

Angular JSでページURLを動的に設定するオプションはありますか。 Angular JSはよく知られているシングルページアプリケーションで、HTMLページビューを読み込んでHTML内のデータを変更することで値をバインドしています。Angular JSでページURLをカスタマイズする方法

例:www.mysite.com/#/myPageというページがあるとします。myPage HTMLファイル内の値を変更します。私はページ内のコンテンツに基づいてブラウザに表示されているURLを変更したい。デモリンク

<div ng-app ng-controller="LoginController"> 
    <div>Hello {{ user.firstName }}</div> 
    <input ng-model="user.firstName"></input> 
    <input type="submit" ng-click="login()" value="Login"></input> 
    <div ng-repeat="login in logins">{{ login }}</div> 
</div> 

function LoginController($scope) { 
    $scope.user = { 
     firstName: "Foo", 
     lastName: "Bar" 
    }; 
    $scope.logins = []; 
    $scope.login = function() { 
     $scope.logins.push($scope.user.firstName + " was logged in."); 
    }; 
} 

.. https://jsfiddle.net/Lt7aP/4/

私は、ログインボタンをクリックする前に、URLはこのwww.mysite.com/#/myPageようとしているページのURLログイン時にクリックした後かもしれませんこのwww.mysite.com/#/myPageLoggedINに変更してください。

角度JSルーティングまたは$ロケーションサービスを使用してこれを達成する方法はありますか。

+0

はい、あなたはこのような何かを意味 – Jax

+0

[$ routeProvider](http://www.w3schools.com/angular/angular_routing.asp)を使用することができますパスを変更せずにリロードする –

+0

http://embed.plnkr.co/dd8Nk9PDFotCQu4yrnDg/ – Mistalis

答えて

1

角度チュートリアルをご覧ください。

https://docs.angularjs.org/tutorial/step_09

@Jaxはあなたが望むものを達成するために$ routeProviderを設定することができ、言ったように。 UIルータと

EDIT

https://github.com/angular-ui/ui-router/wiki/URL-routing

$stateProvider 
.state('phone.detail', { 
    url: "/phone/:marque", 
    templateUrl: 'phone.detail.html', 
    controller: function ($stateParams) { 
     // If we got here from a url of /phone/Nokia 
     expect($stateParams).toBe({marque: "Nokia"}); 
    } 
}) 

あなたはサービスや工場で$windowを注入し、$window.history.pushState()$window.history.replaceState()方法を試みることができるコード

$state.go('phone.detail', {marque: "Nokia"}); 
+0

ルーティング用に$ routeProviderを使用していますが、ページのURLをカスタマイズする方法はあります。私のHTMLページは変わらず、その中のコンテンツはユーザーのクリックに基づいて変わります。私は電話のウェブサイトを持っていると電話の詳細ページを持っていると、ユーザーが電話の詳細ページにあるとき、URLはwww.phone.com/#phoneDetailになります、ここで私はURLをwww.phone.com/#Nokia、wwwにchnageしたい.phone.com /#Samsungは、ユーザーが開いた内容に基づいています。 –

+0

私はuiルータの例で編集しました – PortePoisse

0

からacceedするにはこれはあなたにo履歴エントリの追加と変更。 https://www.consolelog.io/angularjs-:

// pseudo 
angular 
    .module('myServiceModule', []) 
    .service(['$window', function ($window) { 
     return { 
      changeState: function (page, title, relativeRoute) { 
       $window.history.pushState(page, title, relativeRoute); 
      }; 
     } 
    } 
}]); 
関連する問題