2016-01-22 84 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