Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css AngularJS:如何为所有元素设置样式属性?_Css_Angularjs - Fatal编程技术网

Css AngularJS:如何为所有元素设置样式属性?

Css AngularJS:如何为所有元素设置样式属性?,css,angularjs,Css,Angularjs,我有一个我正在处理的表单页面,基本的AngularJS结构正在工作。当用户选择特定字体时,我希望所有页面元素都更改为该字体。在我的样式表中,我使用了“*”选择器,但我不知道如何通过Angular更新它。我在下面附上了基本的页面结构代码(请注意,页面中的元素比这个多,但我删除了所有元素,除了这个问题的H1)。有什么想法吗 <!doctype html> <html ng-app="theapp"> <head> <title>App</

我有一个我正在处理的表单页面,基本的AngularJS结构正在工作。当用户选择特定字体时,我希望所有页面元素都更改为该字体。在我的样式表中,我使用了“*”选择器,但我不知道如何通过Angular更新它。我在下面附上了基本的页面结构代码(请注意,页面中的元素比这个多,但我删除了所有元素,除了这个问题的H1)。有什么想法吗

<!doctype html>
<html ng-app="theapp">
<head>
    <title>App</title>
    <style type="text/css">
        * {
            font-family: sans-serif;
            font-size: 12pt;
        }
    </style>
</head>
<body ng-controller="FormController as form">
    <h1>Hello</h1>
    <form name="theForm">
        <select ng-model="font" ng-options="font.face for font in fonts"></select>
    </form>
    <script type="text/javascript" src="js/angular.min.js"></script>
    <script type="text/javascript">
        (function () {
            angular.module("theapp", [])
                .controller("FormController", ["$scope", function ($scope) {
                    $scope.fonts = [
                        { face: "sans-serif" },
                        { face: "Arial" },
                        { face: "Tahoma" },
                        { face: "Trebuchet MS" },
                        { face: "Verdana" },
                        { face: "serif" },
                        { face: "Times" },
                        { face: "Georgia" },
                        { face: "monospace" },
                        { face: "Courier" }
                    ];
                    $scope.font = $scope.fonts[0];
                }]);
        })();
    </script>
</body>
</html>

应用程序
* {
字体系列:无衬线;
字号:12号;
}
你好
(功能(){
角度模块(“theapp”,[])
.controller(“FormController”,[“$scope”,函数($scope){
$scope.font=[
{面:“无衬线”},
{face:“Arial”},
{脸:“塔荷马”},
{face:“投石机MS”},
{脸:“Verdana”},
{面:“衬线”},
{脸:“时代”},
{正面:“格鲁吉亚”},
{face:“monospace”},
{脸:“信使”}
];
$scope.font=$scope.font[0];
}]);
})();

您可以在标记中使用
ng样式
,并将其链接到
scope.font
变量

看一下文档:

我没有试过,但是你可以在
主体下添加
div
,这样
在你的控制器中你就可以
$scope.style={“font-family”:$scope.font}

style=“font-family:{{font.face}}”
添加到主体标记中。
我做了一个

谢谢[橙色]和[尼尔斯克]的建议。 这两个都是好主意,但仍然不能满足我的需要。 最后,我决定只使用jQuery来更新$(“*”).css()属性。 (反正我们已经在使用jQuery了,所以我不会不必要地引入另一个JS库。) 这正是我需要的,不会使代码复杂化。
再次感谢!:)

你能解释一下我们提出的方法中有什么不起作用吗?我想我应该更详细地描述上面的示例代码。我们实际上在页面上有3个控制器,一个在主体级别,实际上不是如图所示的FormController。我们不希望混合控制器的功能,因此您提供的解决方案(尽管它可以工作)将不适用于我们。我试图解决的主要问题是如何通过AngularJS处理$(“*”)选择器。这看起来不是很容易处理的,但是jQuery可以。(如果您知道Angular解决*选择器的方法,请让我知道。)再次感谢。Angular的方法不是强制执行任何DOM操作,而是在模板中标记这些简单的更改(如图所示)。即使您有3个控制器,这也可以工作,因为作用域继承父作用域的属性(除非它们在指令中被隔离)。