2016-11-03 2 views
1

私はAngularJS(1.4)でアプリケーションを構築していますが、私はangular-ui-routerに問題があります。angle-ui-router urlがパラメータと間違って取得される

私は他の人の間で、このルートがあります。

{ 
    name: 'personal_payment', 
     url: '/:personalLink', 
     templateUrl: 'personal_payment/personal_payment.html', 
     data: { 
      needAuth: false, 
      noBackground: true 
     } 
} 

をして、ルート定義の最後に、私はこのコード行を持っている:

states.forEach(function(state) { 
    $stateProvider.state(state); 
}); 

問題は今、すべてのページのようなことです/ login:/ dashboardは、:personalLinkパラメーターと間違っています。 ngRouteでは最初に/ loginルートを定義してから/:personalLinkを定義するだけで十分でしたが、angle-ui-routerでは/:personalLinkルートが配列の最後のルートであるため動作していないようです。

私には何が欠けていますか?

EDIT:/ loginルートだけが動作しないことに気付きました。他のすべてのルートでは、解決順序が正しいことがわかりました。私はこの特定のルートにいくつかの問題があると思います!

これは、/ログインルートの定義です:

{ 
     name: 'login', 
     url: '/login', 
     templateUrl: 'login/login.html', 
     data: { 
      needAuth: false, 
      noBackground: false 
     } 
    }, 

ルートも空のコントローラでは動作しません:

'use strict'; 

angular.module(
    'myApp.login', ['ui.router'] 
). 
controller('LoginCtrl', ["$rootScope", function($rootScope) { 
}]); 

テンプレートは以下の通りです:

<div class='landing1'> 
    <div class='landingbox' style='min-height: 386px'> 
     <div ng-controller="LoginCtrl" class='below-header'> 
      LOGIN PAGE 
     </div> 
    </div> 
    <div class="stripebadge"> 
     <a href='https://herokuapp.com/privacy' target="_blank" class='light-text font-montserrat' style='font-size: 12px; margin-left: 7px'>Privacy Policy</a> 
     <a href="mailto:[email protected]?Subject=Paylinko%20Support%20" class='light-text font-montserrat' style='font-size: 12px; margin-left: 22px;'>Contact</a><br> 
     <img src="assets/images/stripebadge.svg" width="185" align="center" style='margin-top: 10px; margin-bottom: 6px;'><br> 
     <span class='light_text' style='font-size: 12px;'> 
     <br> 
     Copyright &copy; 2016 Paylinko, all rights reserved.</span> 
    </div> 
    <div ng-include="'footer_pl.html'"></div> 
</div> 

他のルートは正常に動作しますが、私は実際に何が問題なのか分かりません。

+0

'/:personalLink'でなければなりませんか、'/endpoint /:personalLink'でもかまいませんか? –

+0

これは、エンドポイントを追加するのと比べて、このように優れています。私はこれには回避策がないと信じていません! – ste

+0

それは何も変わっていない、私は私の質問を更新しました! – ste

答えて

0

最初のパラメータは、そう、名前です:

states.forEach(function(state) { 
    $stateProvider.state(state.name, state); 
}); 
0

問題は、ルートシステムとは何の関係もありませんでした。基本的に問題は、ルートリンク(例: '/ login')がアプリケーションアーキテクチャ内の物理フォルダと一致したときでした。動作していたすべてのルートは、ファイルを含むフォルダとは異なる名前でした(例:ルート名は「/ account」ですが、フォルダ名は「setting」です)。

私は私のサーバーのファイルにこのコードを追加:

app.use('/*', function(req, res, next) { 
    if (req.baseUrl && (req.baseUrl.match(/\.*\.(js|html|css|jpg|jpeg|png|gif|svg|ttf|woff|woff2|ico|php|xml|txt)\.*/g))) { 
      return next(); 
     } else { 
      res.sendfile('app/index.html'); 
     } 

}); 

今、すべてが正常に動作します。

関連する問題