Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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 AngularJS-UI路由-如何在控制器中将路由状态用作变量?_Javascript_Jquery_Angularjs_Angularjs Scope_Angular Ui Router - Fatal编程技术网

Javascript AngularJS-UI路由-如何在控制器中将路由状态用作变量?

Javascript AngularJS-UI路由-如何在控制器中将路由状态用作变量?,javascript,jquery,angularjs,angularjs-scope,angular-ui-router,Javascript,Jquery,Angularjs,Angularjs Scope,Angular Ui Router,我正在使用Angular JS和UI路由。路由工作正常。我的问题是根据用户所在的页面显示和隐藏滑块 My index.html的外观如下所示: <body ng-app="myApp"> <header ng-include="'templates/header.html'"></header> <div>Code for slider</div> <!--=== Content Part ===--> <div

我正在使用Angular JS和UI路由。路由工作正常。我的问题是根据用户所在的页面显示和隐藏滑块

My index.html的外观如下所示:

<body ng-app="myApp">

<header ng-include="'templates/header.html'"></header>
<div>Code for slider</div>


<!--=== Content Part ===-->
<div class="container"> 
<div class="row" >
    <div ui-view autoscroll="false"></div>
</div>


</div><!--/container-->     
<!-- End Content Part -->

<footer ng-include="'templates/footer.html'"></footer>
angular
.module('myApp', ['ui.router'])
.config(['$urlRouterProvider','$stateProvider',function($urlRouterProvider,$stateProvider){
    $urlRouterProvider.otherwise('/');
    $stateProvider
        .state('home',{
            url: '/',
            templateUrl: 'templates/home.html'
        })
        .state('about',{
            url: '/about',
            templateUrl: 'templates/about.html'
        })
        .state('contact',{
            url: '/contact',
            template: 'CONTACT'
        })
}])
.controller()
现在我尝试将滑块包含在home.html模板中,但由于初始化要求,滑块无法正常工作。当我在不同的路由中使用控制器时,它超出了范围。那么,我如何将一个引用状态的变量传递给一个独立于路由的控制器,这样我就可以对它进行类似的操作

if (state==home) {
   $scope.showSlider==true;
}else{ $scope.showSlider==false;}
谢谢

格尔德

更新: @克里斯·T

我已将此添加到我的app.js中:

 .controller('myController',['$scope', '$state', function($scope,$state){
if ($state.includes('home')){
    $scope.showIt=true;

}else{
    $scope.showIt=false;
}
 }])
然后我将控制器应用到一个div上,我将其缠绕在滑块上并使用它

 ng-show="showIt"

将$state注入控制器。然后检查
$state.includes(“home”)

更新: 我使用父状态创建了一个plunk,该父状态基于$state.includes('main.home')控制滑块的启用/禁用


谢谢Chris,我成功了,但只在ui路由的.config中。。。然后在HTML中的滑块部分之外有一个控制器和一个作用域。。。当我试图创建一个新的控制器并在ui路由器配置之外传入$state时,我遇到了一个错误。关于可能出现的错误或我如何将结果传递给其他控制器的任何建议?您能告诉我您是如何创建控制器和注入$state的吗?我已将控制器添加为原始问题的更新。感谢您的帮助!我现在更明白这个问题了。你有两个选择。滑块在控制器上下文之外运行。您可以直接将逻辑嵌入到标记中,使用$rootScope访问$state(meh):或者您可以创建一个父状态(更好)并使用一个控制器。直接添加到主页(index.html)的.js和.css被添加到全局范围(窗口)中,并且应该可以在ui路由器视图中使用。滑块和youtube控件是否需要运行javascript才能初始化它们?如果是这样,您可能需要将初始化代码放在适当的位置。例如,您可能希望将init代码包装在指令中。