2016-07-23 12 views
0

ng-click$state.go()を状態に使用し、正しいURLを取得して間違ったテンプレートとコントローラーを取得するという奇妙な問題があります。角度UIルーターが間違ったテンプレートとコントロールラー

これらは私の状態です:

app.config(function($stateProvider, $urlRouterProvider){ 
     $urlRouterProvider.otherwise("/messages"); 
     $stateProvider.state('message', { 
     url: "/messages/:to/:fro/:messageID", 
     templateUrl: 'message.html', 
     controller: 'MessageCtrl' 
    }).state('compose', { 
     url: "/messages/compose/a/message", 
     templateUrl: 'compose.html', 
     controller: 'ComposeCtrl' 
    }); 
}); 

これは私のng-clickによってトリガ関数であり、私はので、私は右の1が発射される知っているコンソールログを取得し、実際にしています。

$scope.composeMe = function(){ 
    console.log("You want to compose a message!"); 
    $state.go("compose"); 
    }; 

私はURLはhttp://example.com/messages/compose/a/messageに変更し得るが、私はtemplateUrlmessage状態のcontrollerを取得し、その関数を発射。

なぜですか?他の状態は同様の関数(ng-click由来)から起動され、完全に機能します。

答えて

1

あなたが実際に行こうとしているURLと一致するURLがあります。

ui-routerは、「作成」は必要なフィールドではなく、「a」は必要なfro:フィールドではなく、「メッセージ」は必要なmessageIDではないことをどのように知っていますか?

より具体的な状態定義を、URLパラメータを持つものよりも上に移動します。

+0

意味がありますが、私はそれがURLではない状態と一致していると思っていましたが、なぜそれが間違っているのかを見ることができます。 –

関連する問題