routeProvider を使用して、URL のコントローラーとテンプレートを定義します。
実際の場所と同じ URL を持つリンクをクリックしても、何も起こりません。reload()
場所が変わっていなくても、ユーザーがそのようなリンクをクリックした場合にメソッドが呼び出されるようにしたいと思います。つまり、場所を同じ値に設定した場合、別の値に設定した場合と同じように動作するようにしたいと考えています。
それを自動的に行うように routeProvider または locationProvider を構成する方法はありますか? または、これを行うための正しいアプローチは何ですか? これは往復アプリケーションでは標準的な動作ですが、angularjs で行うにはどうすればよいですか?
グーグルグループでも質問しました。
アップデート:
この質問は多くの意見を集めているので、私がどのように問題を解決したかを説明しようと思います。
Renan Tomal Fernandes がコメントで提案したように、アプリでリンクするためのカスタム ディレクティブを作成しました。
angular.module('core.directives').directive('diHref', ['$location', '$route',
function($location, $route) {
return function(scope, element, attrs) {
scope.$watch('diHref', function() {
if(attrs.diHref) {
element.attr('href', attrs.diHref);
element.bind('click', function(event) {
scope.$apply(function(){
if($location.path() == attrs.diHref) $route.reload();
});
});
}
});
}
}]);
このディレクティブは、アプリ内のすべてのリンクに使用され、この機能が必要です。
<a di-href="/home/">Home</a>
このディレクティブが行うことは、href
属性に基づいて属性を設定することです。これによりdi-href
、angular は常にそれを処理でき、リンクにカーソルを合わせると URL を確認できます。さらに、ユーザーがそれをクリックし、リンクのパスが現在のパスと同じである場合、ルートをリロードします。