0

パラメータ付きの $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'});と、何も得られません。

4

2 に答える 2

1

コンソールにパラメータが表示されているが、実行中のコードに表示されていない場合は、非同期リクエストが完了してデータが入力されるのに十分な遅延で、Chrome が console.log を評価する傾向があるためである可能性があります。信頼できるデバッグ方法。

$viewContentLoaded イベントが発生するのをリッスンして、パスを確認できますか? つまり、ビューが完全に読み込まれ、すべての変数が設定されている必要があります ($location.path() を含む)

于 2014-07-17T07:32:28.190 に答える
0

この問題について本当の答えが得られないので、最終的に次のように解決しました。

ソース ページ sidebar.js で、ツリービューの onSelect event() を定義しました。

 function onTreeSelect(e) {
        vm.selectedReport = e.sender._current.text();          
        $location.url('index.html#/?reptname=' + vm.selectedReport);            
    }

ターゲット ページ、dashboard.js で、hash() メソッドを使用してクエリ文字列を読み取ります。

  vm.reptNameParam = $location.$$hash.split("="); 

$location.url() は、パラメーター リストを使用して正常にリダイレクトできる唯一の方法のようです。$location.path() を使用してもうまくいきません。つまり、空の文字列を返すため、 $location.hash() またはその他の方法を使用してターゲット ページのクエリ文字列を読み取ることができません。

于 2014-07-20T14:57:32.650 に答える