Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 让我的角度控制器检查查看它的ui';与ui路由器一起位于中_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 让我的角度控制器检查查看它的ui';与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',

我正在用angularjs使用ui路由器。我想为视图编写一个模板,该模板将根据视图的内容显示图像。这是我的示例状态

$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