2013-02-13 91 views
1

正如书名纳克级的一个div类,我试图设置在页面加载(不点击)具有角ng-class一个div一类,但我不知道如何或者如果可能的话。 div被封装在一个模块和控制器中,我之前试图用$scope.frontpage设置该变量,但它不起作用。设置与页面加载

<div id="main" role="main" class="clearfix" data-ng-module="ValidationBoxModule" ng-controller="ValidationBoxClassController"> 
    <div validation-id="dataValidationSummary" validation-summary ng-class="frontpage" ></div> 
    <asp:ContentPlaceHolder ID="MainContentPlaceHolder" runat="server"></asp:ContentPlaceHolder> 
</div> 

angular.module("ValidationBoxModule", []).controller("ValidationBoxClassController", ["$scope", function ($scope) { 

    $scope.frontpage = ""; 

    ($("#main").find(".sliderBox")) ? $scope.frontpage = "frontpage" : $scope.frontpage = ""; 
}]); 

那么有没有办法做到这一点?

+0

你怎么确定DIV? – 2013-02-13 16:49:57

+0

你使用jQuery吗? – Jrod 2013-02-13 16:53:04

+0

jQuery也被加载,是 – Roland 2013-02-13 16:54:38

回答

3

你想要做的不是的角度方式。如:“不要在控制器中进行DOM操作”。而是使用一个指令,e.g:

function Ctrl($scope) { 
    $scope.frontpage = false; 
} 

angular.module('app', ['app.directives']); 

angular.module('app.directives', []).directive('isFrontpage', function() { 
    return { 
    restrict: 'A', 
    link: function (scope, element) { 
     scope.frontpage = angular.element(element).find('#main .sliderBox').length > 0; 
    } 
    }; 
}); 

有:

<body ng-controller="Ctrl" is-frontpage> 
    <div id="main"> 
    <div class="sliderBox"></div> 
    </div> 

    <div 
    validation-id="dataValidationSummary" 
    validation-summary 
    ng-class="{frontpage: frontpage}"> 
    </div> 
</body> 

演示http://jsbin.com/unihon/4/

+0

我仍然得到相同的行为,什么也没有发生.... – Roland 2013-02-13 17:32:50

+0

它在演示中工作,也许你可以找出你的实际代码的差异。 – Yoshi 2013-02-13 17:39:58

+0

我看到它,它必须是东西在我的代码......这是一个大项目,这是不容易找到的东西... – Roland 2013-02-13 17:44:11