我有一个奇怪的问题,我使用ng-click
到$state.go()
状态,并获取正确的网址,但错误的模板和控制器。
这些是我的状态:
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
触发的功能,我实际上正在获取控制台日志,所以我知道正确的是正在触发。
$scope.composeMe = function(){
console.log("You want to compose a message!");
$state.go("compose");
};
当我触发该功能时,我会将网址更改为http://example.com/messages/compose/a/message
,但我会获得templateUrl
状态的controller
和message
。
为什么?另一个状态是从类似的(ng-click
派生的)函数触发而且效果很好。
答案 0 :(得分:1)
您尝试访问的网址与您实际要访问的网址相匹配。
ui-router如何知道"撰写"不是你想要的字段:" a"不是你想要的场地,而是"消息"不是你想要的消息ID吗?
将更具体的状态定义移到带有URL参数的状态定义之上。