Javascript 让我的角度控制器检查查看它的ui';与ui路由器一起位于中
我正在用angularjs使用ui路由器。我想为视图编写一个模板,该模板将根据视图的内容显示图像。这是我的示例状态Javascript 让我的角度控制器检查查看它的ui';与ui路由器一起位于中,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我正在用angularjs使用ui路由器。我想为视图编写一个模板,该模板将根据视图的内容显示图像。这是我的示例状态 $stateProvider .state('index', { url: "", views: { "topStormtrooper": { templateUrl: '/components/stormtroopers/stormtroopers.html',
$stateProvider
.state('index', {
url: "",
views: {
"topStormtrooper": {
templateUrl: '/components/stormtroopers/stormtroopers.html',
controller: "stormtroopersCtrl"
},
"bottomStormtrooper": {
templateUrl: '/components/stormtroopers/stormtroopers.html',
controller: "stormtroopersCtrl"
}
}
})
我的控制器看起来像这样
.controller('stormtroopersCtrl', ['$scope', '$http', '$stateParams', function ($scope, $http, $stateParams) {
//
$scope.stormtrooper = $stateView; //it should be something like this hopefully
}]);
模板都是一样的,只是图像会因加载到哪个视图而有所不同。目前,我只是为每个视图添加了一个新的控制器,并基于此加载图像。但是我觉得我应该能够用一个控制器来完成这项工作,并且控制器应该能够检测到视图是什么。我知道你可以检测到这个状态,但我想深入一点,获得视图
有什么想法吗 您可以如下方式访问当前状态配置对象:
$state.current
有关更多信息,请查看您可以根据 例如:
.controller('stormtroopersCtrl', ['$scope', '$http', '$stateParams', function ($scope, $http, $stateParams) {
$scope.$on("$viewContentLoaded",function(event,viewName){ //listen for when the content is loaded into the view
$scope.currentView = viewName; //assign the view name in a model
console.log($scope.currentView);
//do something because you got the view name now....
});
}]);
您不需要仅为模板中的图像更改状态。您可以使用范围变量进行设置
angular.module('app',[])
.controller('stormtrooperCtrl',['$scope',函数($scope){
//
$scope.selected=0;
$scope.images=[
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSz6dBOOsFVAeSilVEIO9dqwrY4R5gCzEMcrRVZguhYhr9PVJsThQ",
"http://www.wallpapereast.com/static/images/Wallpaper-Nature-8B71.jpg",
"http://www.intrawallpaper.com/static/images/1250654-for-laptop-nature.jpg"
];
}]);代码>
图1
图2
图3
您是否希望访问控制器中的当前状态?像console.log($scope.stormtrooper)/“index”
这似乎是正确的想法,只是参数viewName返回未定义。奇怪的是,如果我使用$viewContentLoading,它会对我起作用,但它会为每个正在加载的视图触发一个事件,这使我无法知道这个StormtroperCtrl正在加载哪个视图。@h0您使用的是哪个版本的angular?我使用的是版本1.4.4