从AngularJS指令更改body css样式属性

从AngularJS指令更改body css样式属性,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我是AngularJS的新手,在window scroll上做了一个指令,用来修改body标记的css样式中的一个值。这是指令: app.directive("parallaxDir", function ($window, $document) { return function (scope, element, attrs) { angular.element($window).bind("scroll", function () { cons

我是AngularJS的新手,在window scroll上做了一个指令,用来修改
body
标记的css样式中的一个值。这是指令:

app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            console.log('Scroll in da directive');
            // Here I want to modify the body tag css style to:
            // background-position-y = $window.pageYOffset / 2) + "px")
        });
    };
});
我该怎么做


提前感谢。

我在以下网站上偶然发现了一个解决方案:

最后的代码如下所示:

app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = angular.element(document).find('body');
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});
app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = $document[0].body;
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});

我偶然发现了一个解决方案:

最后的代码如下所示:

app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = angular.element(document).find('body');
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});
app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = $document[0].body;
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});

迟到,但接受答案中的jqLite
find
方法必须搜索所有子项,因为
正文直接存储在
$document
上。使用
$document[0].body会更有效

您的最终代码如下所示:

app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = angular.element(document).find('body');
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});
app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = $document[0].body;
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});

迟到,但接受答案中的jqLite
find
方法必须搜索所有子项,因为
正文直接存储在
$document
上。使用
$document[0].body会更有效

您的最终代码如下所示:

app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = angular.element(document).find('body');
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});
app.directive("parallaxDir", function ($window, $document) {
    return function (scope, element, attrs) {
        angular.element($window).bind("scroll", function () {
            var body = $document[0].body;
            body.css("background-position-y", ($window.pageYOffset / 2) + "px");
            scope.$apply();
        });
    };
});