2016-01-22 92 views
0

我有一个应用程序,其中有一个名为suggestions的州。当我点击从当前状态过渡到suggestions状态的按钮时,我想将一个css类添加到application.html.haml文件(根)中的元素。查找root ng类元素

所以结构看起来像这样,

  • application.html.haml
    • { “UI视图”=> “头版”}
      • %一{“UI- SREF “=>” 是哪里。建议”, “NG单击”=> “模糊()”}

因此,该应用程序具有view属性的div元素,它会在此视图中加载FrontPage模板,并且在此模板中有一个调用suggestions状态的按钮。

所以,当这个按钮被点击时,我想向application.html.haml中的元素添加一个类,但是我无法使其工作。

在我的建议控制器我有,

$scope.contentBlur = function(){ 
    $scope.blur = 'blur'; 
} 

application.html.haml

%body{"ng-class" => "blur"} 

但是,当我点击链接,身体不会改变。不过,我把{"ng-class" => "blur"}放入模板中,当输入suggestions状态时,它会加载它的工作。

所以这可能是因为%body元素没有连接到建议控制器(因为建议模板是,然后它工作)。

所以一个解决方案可能是将建议控制器添加到body元素,但看起来有点脏。我希望有一种方法可以以某种方式在控制器外部找到"ng-class"元素。

回答

0

在完成15分钟的研究后,总是很高兴找到问题的答案。

通过改变"ng-class"这它的工作,

{"ng-class" => "{ 'blur': $root.blur=='blur' }"} 
0

假设你正在使用ui-router,如果你想一类分配给基于当前的状态你的身体元素,可以考虑使用$state.includes方法。

例子(HTML):

<body ng-controller="BodyController as body" ng-class="{blur: body.state.includes('suggestions')"> 

...在你的BodyController

angular.module('myApp) 
    .controller('BodyController', BodyController); 

function BodyController($state) { 
    var body = this; 
    this.state = $state; 
} 

$state.includes方法检测,如果你是在suggestions一个孩子的状态为好,这可能有用。如果不需要,请改用$state.is