.config(CoreTheme)functionCoreTheme($mdThemingProvider){$mdThemingProvider.theme('default').primaryPalette('blue',{'default':'500','hue-1':'900','hue-2':'A100','hue-3':'400'}).accentPalette('green',{'default':'600','hue-1':'900','hue-2':'A100','hue-3':'400'}).warnPalette('deep-orange',{'default':'500',});$mdThemingProvider.alwaysWatchTheme(true)}CoreTheme.$inject=['$mdThemingProvider'];exportdefaultCoreTheme;module.jsexportdefaultangular.module('theme',['ngMaterial']);controller.jsclassThemeCtrl{constructor($scope,$rootScope,$mdThemingProvider){$scope.changeTheme=changeTheme;functionchangeTheme(theme_name){$mdThemingProvider.theme('default').dark()}}}ThemeCtrl.$inject=['$scope','$rootScope','$mdThemingProvider'];exportdefaultThemeCtrl;我想在这个控制器中动态改变主题样式可是注入这个Provider报错!应该怎么做?我能想到的是(1)可以在.config()中$watch某个变量来改变主题吗?
2 回答

眼眸繁星
TA贡献1873条经验 获得超9个赞
参考问题刚才看了下最新的material源码,貌似没有reload这个函数,如果要使用下面的方法还是需要修改material的源码。如果不改源码的话,请忽略这个答案。可以按如下步骤尝试下:1.按照参考问题里面的答案修改material的源码2.在configure阶段,注册$mdThemingProvider供controller使用angular.module("yourModule",['whateverDependencies']).config(function($provide,$mdThemingProvider){$provide.value('themeProvider',$mdThemingProvider);})3.在controller中重新加载theme.controller('someController',function(themeProvider,$injector){themeProvider.theme('default').dark();themeProvider.reload($injector);}

慕田峪4524236
TA贡献1875条经验 获得超5个赞
Configuringofthedefaultthemeisdonebyusingthe$mdThemingProviderduringapplicationconfiguration.官网说了,请在configuration配置。angularmaterial在生成页面的时候已经给好主题了。比如md-button生成之后是md-buttonmd-default-theme。如果要修改主题的话可以遍历页面md-default-theme替换成你想要的主题md-dark-theme。但这样做很累,对吧。所以最好是选一个主题之后,新窗口打开预览。或者有个单独设置主题的页面,列出所有主题的样子。供选择就好。毕竟在原有网站上预览界面是个很烦的事情。
添加回答
举报
0/150
提交
取消