私はユーザーが入力のIDを入力し、 "移動"ボタンを押す単純なページを持っています。私はonSubmit関数を使っていましたが、うまくいきました。それから、URLから/#/
を削除するために有効になっているhtml5を含むようにAngularコードを変更しました。
search.template.html
<div class="row">
<div class="small-12 column header-title">
<h2>{{ svm.title }}</h2><h5>BETA</h5>
</div>
</div>
<form role="form" ng-submit="svm.onSubmit()">
<div class="row">
<div class="small-12 small-centered columns">
<div class="row collapse postfix-round">
<div class="small-9 columns">
<input ng-model="svm.formData.eventid" class="event-id" type="text" placeholder="Event ID" maxlength="7">
</div>
<div class="small-3 columns">
<button type="submit" class="button postfix event-submit">Go</button>
</div>
<div role="alert" ng-show="svm.formData.formError" class="alert alert-danger event-id-error">{{ svm.formData.formError }}</div>
</div>
</div>
</div>
</form>
search.controller.js
(function() {
angular
.module('monitorApp')
.controller('searchCtrl', searchCtrl);
searchCtrl.$inject = ['$window'];
function searchCtrl($window) {
var vm = this;
vm.title = 'Monitor';
vm.formData = {};
vm.onSubmit = function() {
vm.formError = '';
if (!vm.formData.eventid) {
vm.formData.formError = 'Please enter Event ID.';
return false;
} else {
vm.formData.formError = '';
$window.location.href = '/#event/' + vm.formData.eventid;
return false;
}
};
}
})();
だから、私はイベントを提出する際に使用するために使用するコントローラ$window.location.href = '/event/' + vm.formData.eventid;
に表示される場合があります。今度は `html5Mode(true)の追加以来、それは壊れているだけではないようですが、それがうまくいけば、サーバー側のルーティングに私を送りますが、これは正しくありません。これは角度ルーティングを使用する必要があります。
私はこれを修正するだけでなく、Angularルーティング(サーバー側のルーティングではない)を適切に使用する方法を見つけようとしています。助けてくれてありがとう!
は、代わりに[ '$のlocation'](https://docs.angularjs.org/api/ng/service/$location#path)サービスを使用します。それはHTML5モードを認識しています – Phil
私の "app.js"では、私は 'function config($ routeProvider、$ locationProvider){...'と '$ locationProvider.html5Mode(true);'を使用しています。 – Kenny
私はURLを変更するつもりです。つまり、 '$ location.path( '/ event/+ vm.formData.eventid)'です。より良いオプションはルータ – Phil