1

我有一个样式对象,我只需要为第一个元素设置另一个 CSS 样式。我专门为此创建了一个指令,但它不起作用

我会感谢你的帮助!

这是代码:

<div class="row" ng-style="rowCss" ng-repeat="top in gridObj" ng-zero>
$scope.rowCss = {
    "height" : rowAndSquareHeight,
    "padding-top": baseLine
}

editorApp.directive('ngZero', ['$document', '$parse', function($document, $parse) {
    return function(scope, element, attr) {
        $(element).css({"padding-top" : "0px"});
    };
}]);

谢谢!

4

4 回答 4

5
<div class="row" 
    ng-style="{ true : rowCss }[$first]" 
    ng-repeat="top in gridObj">
    ...

普朗克

于 2014-08-07T07:29:34.747 回答
4

你不需要一个指令。ng-repeat 范围在重复范围中公开一个属性$first,这对于第一个元素是正确的。您可以为第一行定义一个类并使用 ng-class 来应用它

ng-class="{'my-first-class':$first}"

于 2014-08-07T07:25:38.760 回答
0

您可以使用 $index 来跟踪第 n 个元素。不确定是否已创建指令来解决此问题,但可以使用 ng-attr-style="{$index==1 ? '"padding-top" : "0px"}'}"

此外,您不应操纵 HTML 或参考控制器中的演示文稿/css。

于 2014-08-07T07:16:34.390 回答
-1

您可以使用1.1.5 版中的ng-if - new 来有条件地操作 CSS 样式。

于 2014-08-07T07:15:11.763 回答