cari

Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu766

membalas semua(2)saya akan balas

  • 给我你的怀抱

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

    Soalan rujukan
    Saya baru sahaja melihat kod sumber bahan yang terkini. Jika anda tidak menukar kod sumber, sila abaikan jawapan ini.

    Anda boleh mencubanya seperti berikut:
    1. Ubah suai kod sumber bahan mengikut jawapan dalam soalan rujukan

    2. Dalam fasa konfigurasi, daftar $mdThemingProvider untuk digunakan oleh pengawal

    angular.module("yourModule",['whateverDependencies']).config(
    function($provide, $mdThemingProvider) { 
        $provide.value('themeProvider', $mdThemingProvider); 
    })

    3. Muat semula tema dalam pengawal

    .controller('someController', function(themeProvider, $injector) {         
      themeProvider.theme('default').dark();
      themeProvider.reload($injector);
    }

    balas
    0
  • 曾经蜡笔没有小新

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

    Configuring of the default theme is done by using the $mdThemingProvider during application configuration.
    Tapak web rasmi berkata, sila konfigurasikannya dalam konfigurasi.

    bahan sudut telah pun memberikan tema semasa menjana halaman. Sebagai contoh, selepas butang md dijana, ia adalah md-button md-default-theme. Jika anda ingin mengubah suai tema, anda boleh melintasi halaman dan menggantikan md-default-theme dengan tema yang anda mahu, md-dark-theme.

    Tetapi ia memenatkan, bukan?

    Jadi, sebaiknya buka pratonton dalam tetingkap baharu selepas memilih tema.
    Atau terdapat halaman tetapan tema berasingan yang menyenaraikan rupa semua tema. Hanya ada pilihan. Lagipun, pratonton antara muka di laman web asal adalah perkara yang sangat menjengkelkan.

    balas
    0
  • Batalbalas