찾다

 >  Q&A  >  본문

angular.js - $mdThemingProvider 不能在controller中使用吗

.config(CoreTheme)

function CoreTheme($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'];

export default CoreTheme;

module.js

export default angular.module('theme',['ngMaterial']);

controller.js

class ThemeCtrl{
    constructor($scope,$rootScope,$mdThemingProvider){
   
        $scope.changeTheme = changeTheme;


        function changeTheme(theme_name){
            $mdThemingProvider.theme('default').dark()
        }
    }
}

ThemeCtrl.$inject = ['$scope','$rootScope','$mdThemingProvider'];

export default ThemeCtrl;

我想在这个控制器中 动态改变主题样式 可是注入这个Provider报错!应该怎么做?
我能想到的是(1)可以在.config()中$watch某个变量 来改变主题吗?

高洛峰高洛峰2744일 전768

모든 응답(2)나는 대답할 것이다

  • 给我你的怀抱

    给我你的怀抱2017-05-15 16:58:08

    참고질문
    최신 머티리얼 소스코드를 보았는데, 아래와 같은 방법을 사용하시려면 아직 머티리얼 소스코드를 수정하셔야 할 것 같습니다. 소스 코드를 변경하지 않으면 이 답변을 무시하십시오.

    다음과 같이 시도해 볼 수 있습니다.
    1. 참고 질문의 답변에 따라 자료의 소스 코드를 수정합니다

    2 구성 단계에서 컨트롤러 사용을 위해 $mdThemingProvider를 등록합니다

    으아악

    3. 컨트롤러에서 테마를 다시 로드하세요

    으아악

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:58:08

    Configuring of the default theme is done by using the $mdThemingProvider during application configuration.
    공식 홈페이지에서는 구성에서 구성해 달라고 하더군요.

    angular 재질은 페이지를 생성할 때 이미 테마를 지정했습니다. 예를 들어 md-button이 생성된 후에는 md-button md-default-theme입니다. 테마를 수정하려면 페이지를 탐색하여 md-default-theme를 원하는 테마인 md-dark-theme로 바꿀 수 있습니다.

    근데 이거 하기 힘들죠?

    그래서 테마를 선택한 후 새 창에서 미리보기를 여는 것이 가장 좋습니다.
    또는 모든 테마의 모양을 나열하는 별도의 테마 페이지를 만드세요. 옵션만 있으면 됩니다. 결국, 원래 웹사이트에서 인터페이스를 미리 보는 것은 매우 짜증나는 일입니다.

    회신하다
    0
  • 취소회신하다