我正在使用UI路由器,我的2个州使用相同的视图。我的方法如下。
<button ui-sref="test.state1">
.config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('test.state1', {
url: '/mystate/start',
template: require('./myPage.html'),
controller: function ($scope, myService) {
console.log('2 ctrl called ');
myService.myMethod().then(function () {
console.log('3 calling my method ');
});
},
resolve: {
testOne: [function () {
//service call
}],
testTwo: [function () {
//service call
}]
}
}).state('test.state2', {
url: '/mystate/end',
template: require('./myPage.html'),
controller: 'MyController as myctr'
});
}])
我可以按1,2和3的顺序看到我的控制台日志,首先解析数据,然后点击内联控制器。
我正在尝试将其更改为使用抽象参数。
$stateProvider
.state('test', {
abstract: true,
url: '/mystate',
template: require('./myPage.html')
})
.state('test.state1', {
url: '/start',
controller: function ($scope, myService) {
console.log('2 ctrl called ');
myService.myMethod().then(function () {
console.log('3 calling my method ');
});
},
resolve: {
testOne: [function () {
//service call
}],
testTwo: [function () {
//service call
}]
}
})
.state('test.state2', {
url: '/end',
controller: 'MyController as myctr'
})
现在我只能看到解析,并且不会调用内联ctrl。这是我在设置中缺少的东西吗?文档here尚无定论。