パラメータ付きの $location.path を使用して URL の変更をトリガーしていますが、これらのパラメータはターゲット ページに渡されません。
ソース ページは sidebar.html で、ターゲット ページは dashboard.html です。
私の sidebar.html では、次のように Kendo UI ツリービュー ウィジェットをレンダリングします。
<span id="treeview" kendo-tree-view="tree"
style="color:white;"
k-template="vm.treeItemTemplate"
k-options="vm.treeOptions"
k-data-source="vm.reportsTree"
k-on-change="vm.onTreeSelect(kendoEvent)">
</span>
そして私のsidebar.jsで、クリックイベントでvm.treeItemTemplateを設定しました:
vm.treeItemTemplate = "<a href='\' ng-click='vm.treeItemClick(this)'> {{dataItem.text}} </a>";
次に、ブラウザでツリービュー アイテムをクリックすると、vm.treeItemClick イベントをトリガーして URL を変更し、「reptname」パラメータを省略します。
vm.treeItemClick = function (item) {
console.log("tree view clicked !");
$location.path('/index.html').search({reptname:'MTM'});
}
これはかなり痛いので、アドバイスをいただければ幸いです。
左のナビゲーション バーで Kendo ツリービュー オブジェクトを使用して、ユーザーがさまざまなレポート オプションを選択できるようにする必要があります。これにより、特定の「reptname」パラメーター値を使用して、dashboard.html にリダイレクトされます。
sidebar.js内の $location.path() を(Chrome 開発ツールを使用して) 中断すると、$location オブジェクトの正しい URL プロパティが明確に表示されます。
$location
LocationHashbangUrl {$$protocol: "http", $$host: "localhost", $$port: 49479, $$parse: function, $$compose: function…}
$$absUrl: "http://localhost:49479/index.html#/index.html?reptname=MTM"
$$host: "localhost"
$$parse: function (url) {
$$path: "/index.html"
$$protocol: "http"
$$replace: false
$$rewrite: function (url) {
$$search: Object
$$url: "/index.html?reptname=MTM"
__proto__: Object
ただし、dashboard.html (私のルートでは url:"/" として定義されています) にリダイレクトされると、$location オブジェクトにも $routeParams オブジェクトにもパラメーター リストが表示されません。
これは私が立ち往生している場所です!
- - - アップデート - - - -
パラメータを使用して index.html ページを手動で更新すると、$location オブジェクトにパラメータが含まれます。
ex/ URL:手動で入力したリンク
ただし、を使用して sidebar.js からリダイレクトする$location.path('/index.html').search({reptname:'MTM'});
と、何も得られません。