$mdThemingProvider 不能在controller中使用吗

.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.js
exportdefaultangular.module('theme',['ngMaterial']);
controller.js
classThemeCtrl{
constructor($scope,$rootScope,$mdThemingProvider){
$scope.changeTheme=changeTheme;
functionchangeTheme(theme_name){
$mdThemingProvider.theme('default').dark()
}
}
}
ThemeCtrl.$inject=['$scope','$rootScope','$mdThemingProvider'];
exportdefaultThemeCtrl;
我想在这个控制器中动态改变主题样式可是注入这个Provider报错!应该怎么做?我能想到的是(1)可以在.config()中$watch某个变量来改变主题吗?
弑天下
浏览 529回答 2
2回答

眼眸繁星

参考问题刚才看了下最新的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

Configuringofthedefaultthemeisdonebyusingthe$mdThemingProviderduringapplicationconfiguration.官网说了,请在configuration配置。angularmaterial在生成页面的时候已经给好主题了。比如md-button生成之后是md-buttonmd-default-theme。如果要修改主题的话可以遍历页面md-default-theme替换成你想要的主题md-dark-theme。但这样做很累,对吧。所以最好是选一个主题之后,新窗口打开预览。或者有个单独设置主题的页面,列出所有主题的样子。供选择就好。毕竟在原有网站上预览界面是个很烦的事情。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript