私は2つの異なる経路のための2つの異なる状態持っているつのルートから、オプションのparamsを渡す停止する方法:私は$ location.searchを使用route1の内角度UIルータは完全に異なるルート
// Route1.js
angular.module('app')
.config(function ($stateProvider) {
$stateProvider
.state('route1', {
url: '/route1?someOptionalParams',
reloadOnSearch: false,
templateUrl: 'app/routes/route1/route1.html',
controller: 'Route1Ctrl',
controllerAs: 'vm'
});
});
// Route2.js
angular.module('app')
.config(function ($stateProvider) {
$stateProvider
.state('route2', {
url: '/route2',
templateUrl: 'app/routes/route2/route2.html',
controller: 'Route2Ctrl',
controllerAs: 'vm'
});
});
を(例えば$location.search('someOptionalParams', 'yayParams');
)を更新しますそのルートのロードされたデータしかし、私がng-href='\route2'
を使ってRoute2に行くnavbarをクリックすると、paramsが来ます。この現象を防ぐにはどうしたらいいですか?
更新: 私はroute1の中で、このコードに問題を特定することができました:
$scope.$on('$locationChangeSuccess', function() {
doAsynchronousStuff();
});
function doAsynchronousStuff() {
...codey stuff...
$location.search('someOptionalParams', 'newData');
}
$のlocationChangeSuccessコード、私はルートを変更開始後に起動しますが、ルートが変更される前に私は現在、コードを場所の変更に応じて発動させたり、関連のないルートに移動しているときにコードが発射されないようにするための代替方法を探しています。
驚くばかりです、私はこれを行っていきます。 – bananabanana
これは解決していないようです。さらに、Route1にいるときにオプションのパラメータがなくても、Route2に移動するとオプションのパラメータが表示されるので、URLは "website.com/Route2?someOptionalParams="になります。このコードベースでもう少し詳しく調べて、他の手がかりを考え出すことができるかどうかを見てみましょう。 – bananabanana
'default'を設定する' .state() '定義に' params:{someOptionalParams:null} 'を追加すると、定義されていない限り表示されません。 – tyler