javascript - angularjs ui-router嵌套状态新控制器不起作用
问题描述
我被 ui-router 中的嵌套状态困住了。我正在渲染一个包含地区、国家和每个国家的人的页面
index.html 有三个区域作为链接,EMEA APAC 和 AMER
索引页的部分有:
<a ui-sref="territory({territory: 'amer'})">AMER</a> <a ui-sref="territory({territory: 'emea'})">EMEA</a> <a ui-sref="territory({territory: 'apac'})">APAC</a>
<ui-view></ui-view>
单击链接时,国家/地区由 $http.post 操作返回,并由 /views/countries.html 显示为:
<h1>This is countries</h1>
<br>
Teritory: {{region}}
<div ng-repeat='country in countries'>
<a ui-sref=".support({country: '{{country}}'})">{{country}}</a ui-sref>
</div>
到目前为止,这是有效的!所以我在每个国家/地区都有一个 .support 链接。现在的问题是,当我单击链接时,状态被接受......因为它正在加载模板URL,但似乎没有加载在该状态下指定的控制器。angularjs代码:
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'views/home.html',
controller: 'supportCtrl'
})
.state('territory', {
url: '/territory/:territory',
templateUrl: 'views/countries.html',
controller: 'countryController'
})
.state('territory.support',{
url: '/:country',
templateUrl: 'views/supporter.html',
controller: 'supportController'
})
});
支持控制器正在编写一个 console.log 条目......但没有任何反应。控制器:
supportApp.controller('countryController',['$scope', 'supportService', '$location', '$stateParams', function($scope, supportService, $location, $stateParams){
$scope.fromTerritory = $stateParams.territory;
$scope.getCountries = function(){
var countries = supportService.getCountries($scope.fromTerritory);
countries.then(function(response){
if(response.data.error){
$scope.error = true;
$scope.message = response.data.message;
}
else{
console.log('response OK');
$scope.region = $scope.fromTerritory;
$scope.countries = response.data;
}
});
}
$scope.getCountries();
}]);
supportApp.controller('supportController',['$scope', 'supportService', '$location', '$stateParams', function($scope, supportService, $location, $stateParams){
console.log('in the supportController');
var test = function(){
console.log('supportController country: '+$stateParams.country);
}
test();
}]);
我可能在这里做错了什么。目标是单击国家,然后显示属于该特定国家的人的姓名。
如果不清楚,我可以在需要的地方提供更多信息。但是现在看来嵌套状态(.territory.support)的控制器(supportController)没有运行/加载
谢谢你!
解决方案
好的,我现在有我的答案......因为我没有<ui-view></ui-view>
在 supporter.html 上使用控制器不是“需要”并且没有加载。添加 consol.log 后显示日志条目。
推荐阅读
- java - 如何解析字符串以从字符串中获取#tags数组?
- flutter - Flutter 中的 Firestore 数组大小
- javascript - 为什么在 removeChild 之前,父节点中缺少子节点?
- machine-learning - 如何对具有字符串值的数据使用梯度下降?
- java - Casbin:用户只能使用自己的用户名调用路径
- machine-learning - 如何从 2 个具有不同窗口大小的 LSTM 制作集成模型
- php - 我如何在 laravel 中保存复选框状态
- docker - 使用 HOST OS 网络接口映射的 Docker 网络桥
- python - 我怎样才能在arm(pydroid3)上安装opencv contrib
- javascript - 将使用 localStorage 保存的内容显示到 div