2014-10-17 59 views
0

我无法运行,由于应用程序错误“错误:重复的参数名称模式‘身份证’‘/实例/:ID /实例/:ID /编辑’”

JS

routerApp.config(function($stateProvider, $urlRouterProvider) { 

$urlRouterProvider.otherwise('/home'); 
$stateProvider 
    .state('home', { 
     url : '/home', 
     templateUrl : 'home-view.html', 
     controller : 'homeController' 
    }) 
    .state('instance', { 
     url : '/instance/:id', 
     templateUrl : 'data-view.html', 
     controller : 'instanceController' 
    }) 
    .state('instance.edit', { 
     url: '/instance/:id/edit', 
     templateUrl : 'edit-table.html', 
     controller : 'instanceEditController' 
    }); 

}); 

routerApp.controller('homeController', ['$scope', '$state', function($state, $scope) { 
    console.log("inside home controller"); 
}]); 

routerApp.controller('instanceController', ['$scope', '$state', function($state, $scope) { 
    console.log("inside instance view controller"); 
    $scope.data = [ 
    { 
    "Name" : "Hello" 
    } 
    ] 
}]); 

routerApp.controller('instanceEditController', ['$scope', '$state', function($state, $scope) { 
    console.log("inside instance edit controller"); 

}]); 

如何在状态之间传递数据?我目前使用

<a ui-sref=".edit{{'id' : 2, 'data' : data}}" class="btn btn-primary">Instance View</a> 

Plnkr:http://plnkr.co/edit/IMOYLn8dFzGM4p9OB7My?p=preview

回答

1

你是一个有点困惑AngularJS UI路由器的嵌套状态。

我解决了你的一些问题:http://plnkr.co/edit/YF6ePE1ALdp7qsBaK6oD?p=preview
(还有其他问题,但它给你一个好的开始)。

基本上,你不需要复制整个URL,当你有一个嵌套的状态,即:

来源:

.state('instance.edit', { 
    url: '/instance/:id/edit', 
    templateUrl : 'edit-table.html', 
    controller : 'instanceEditController' 
}); 

更改为:

.state('instance.edit', { 
    url: '/edit', 
    templateUrl : 'edit-table.html', 
    controller : 'instanceEditController' 
}); 

对于嵌套状态,我建议这个文档:Nested States & Nested Views

另一个问题,如何来传递数据,你几乎有:

ui-sref="instance({id:2}) 

在这个演示看看这里:UI-Router Demo,它包含你正在试图完成一个很好的例子。

再次,ui-router wiki是一个很好的阅读:angular-ui/ui-router