我正在使用Angular和ui-router。我无法启动嵌套控制器,但如果状态不是嵌套的,控制器将启动。AngularUI路由器:嵌套状态不启动控制器
该URL是从DnaNodeListCtrl模板生成的。该模板生成看起来像一个正确的URL: http://localhost:8080/#/v1/dnanodes/a9bfd497-ce6b-4832-909e-506a9b29e46e
我的代码如下。为什么我无法启动嵌套控制器?
config.js:
var dnaMgrApp = angular.module('dnaMgrApp', [
'ngRoute',
'ui.router',
'dnaMgrControllers',
'dnaMgrRestService'
]);
dnaMgrApp.config(function($stateProvider, $urlRouterProvider) {
//
// For any unmatched url, redirect to /state1
$urlRouterProvider.otherwise("/");
//
// Now set up the states
$stateProvider
.state('nodeList', {
url: "/",
templateUrl: 'templates/dnaNodeList.html',
controller: 'DnaNodeListCtrl'
})
.state('nodeList.nodeDetail', {
url: "v1/dnanodes/:nodeId",
templateUrl: 'templates/dnaNodeSummary.html',
controller: function($scope){
$scope.title = 'My DNA';}
});
});
模板:
<div id="body-container" >
</div><div id="tablediv">
<div ng-repeat="node in dnaNodes">
<div class="dnanode">
<a ui-sref="nodeList.nodeDetail({nodeId:node.id})">
<table>
<tr><td>{{node.geneName}}</td><td><img src="{{node.statusIcon}}"></td></tr>
<tr><td colspan="2">2 DNA Pathways</td></tr>
</table>
</a>
</div>
<br>
</div>
</div>
</div>
该url由父代模板中的代码生成:ui-sref =“nodeList.nodeDetail({nodeId:node.id})” 添加斜杠只会改变添加到url的双斜杠:“http:// localhost:8080 /#// v1/dnanodes/27ae134e-1067-4788-a97d-0981deca2e53” – garyM
@garyM您误解了我的意思,我的意思是在子状态的配置中添加一个斜杠。 –
嗨巴巴,我确实把它放在创建双斜杠的子状态,并没有解决问题。我也试图在模板的修复中产生相同的双斜线,并且再次没有解决方案。我对这个原因感到困惑。 – garyM