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