$ state.go関数を使用して「新しいタブでリンクを開く」関数を実装しようとしています。次のようなsmthがあったら素晴らしいでしょう:
$state.go('routeHere', {
parameter1 : "parameter"
}, {
reload : true,
newtab : true // or smth like target : "_blank"
});
AngularJSを使用してそれを行う方法はありますか?
$ state.go関数を使用して「新しいタブでリンクを開く」関数を実装しようとしています。次のようなsmthがあったら素晴らしいでしょう:
$state.go('routeHere', {
parameter1 : "parameter"
}, {
reload : true,
newtab : true // or smth like target : "_blank"
});
AngularJSを使用してそれを行う方法はありますか?
回答:
更新:OK、次のコードを使用して解決しました:
var url = $state.href('myroute', {parameter: "parameter"});
window.open(url,'_blank');
私はこれを試しました-どうやら、追加はでtarget="_blank"
動作しui-sref
ます:
<a ui-sref="routeHere" target="_blank">A Link</a>
コントローラにコードを追加する手間を省き、通常のリンクと同様にホバー時にURLを提供します。ウィンウィン!
<a ui-sref="routeHere" target="_blank" class="btn btn-primary" role="button">A Link</a>
私も同様の問題を抱えていました。以前の回答から何もうまくいかない場合は、これを試してください。
var url = '#' + $state.href('preview');
window.open(url,'_blank');
したがって、基本的にローカルホストで作業している間は、追加せずに'#'
リダイレクトするだけでした
ローカルホスト/プレビュー
、 の代わりに
localhost / Project_Name /#/プレビュー
ここでは、データの受け渡しについては取り上げていません。新しいタブで$ stateを開くだけです。
アプリがサブフォルダーにある場合、ローカルホストでは機能しない可能性があります。私は実際に同じ問題を抱えていました。
私はオンラインで試しましたが、以下を使用して期待どおりに機能しました。
<a ui-sref="routeHere" target="_blank">Link</a>
ui-sref="routeHere" href=""target="_blank"
このコードは私の問題を解決しました。
これをアンカータグで使用します。
私が見つけた最も良い答えは、ui.routerを拡張することでした。これは、この機能が組み込まれていないためです。詳細については、こちらをご覧ください。
Angular 1.xui-routerの$ state.goを拡張する
ただし、これを行う必要があることについての簡単な説明を以下に示します。これをapp.jsまたはangular appinitファイルに追加します。
angular.module("AppName").config(['$provide', function ($provide) {
$provide.decorator('$state', ['$delegate', '$window',
function ($delegate, $window) {
var extended = {
goNewTab: function (stateName, params) {
$window.open(
$delegate.href(stateName, params, { absolute: true }), '_blank');
}
};
angular.extend($delegate, extended);
return $delegate;
}]);
}]);
あなたのコードで
次のことができるようになります。
$state.goNewTab('routeHere', { parameter1 : "parameter"});
これを試して!
<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>