Ionic / angular如何更改单选按钮单击事件上的样式表链接标记

时间:2015-04-13 10:42:12

标签: angularjs angularjs-scope ionic-framework ionic

我一直试图弄清楚当用户点击我的设置时如何交换样式表,但到目前为止没有任何运气。

我可以使用ngstorage将选定的样式表存储在本地存储中,但链接标记未更新。这是我的链接标记代码。

<!DOCTYPE html>
<html ng-app="starter">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
    <link ng-href="css/{{theme}}.css" rel="stylesheet">


    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
    <link href="css/ionic.app.css" rel="stylesheet">
    -->

    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    <script src="lib/ionic/js/angular/angular-resource.js"></script>
    <script src="lib/ionic/js/angular/truncate.js"></script>
      <script src="js/ngStorage.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="js/ng-cordova.min.js"></script>
    <script src="cordova.js"></script>

    <!-- your app's js -->
    <script src="js/app.js"></script>
      <script src="js/routes.js"></script>
    <script src="js/posts.js"></script>
      <script src="js/controllers.js"></script>
      <script src="js/filter.js"></script>
      <script src="js/truncate.js"></script>


  </head>
  <body>
       <ion-nav-view></ion-nav-view>
  </body>
</html>

然后我的单选按钮与我的控制器代码一起在下面。

<script id="display-settings-modal.html" type="text/ng-template">
    <ion-modal-view>
        <ion-header-bar class="nav-title-slide-ios7 bar-reactor">
            <h1 class="title">Default Text Size</h1>
            <div class="buttons close-button">
                <button class="button button-icon icon ion-ios-close-empty" ng-click="closeModal()"></button>
            </div>
        </ion-header-bar>
        <ion-content>
            <form action="." ng-submit="noSubmit($event)">
              <ion-radio ng-model="data.font_size" ng-value="'larger-fonts'" ng-click="save_settings('larger-fonts')">X-Large</ion-radio>
              <ion-radio ng-model="data.font_size" ng-value="'big-fonts'" ng-click="save_settings('big-fonts')">Large</ion-radio>
              <ion-radio ng-model="data.font_size" ng-value="''" ng-click="save_settings('')">Medium</ion-radio>
              <ion-radio ng-model="data.font_size" ng-value="'small-fonts'" ng-click="save_settings('small-fonts')">Small</ion-radio>
            </form>
        </ion-content>
    </ion-modal-view>
</script>

我的控制器是

.controller("SettingsCtrl", function($scope, $state, $ionicModal, $localStorage) {
        $ionicModal.fromTemplateUrl('display-settings-modal.html', {
            scope: $scope,
            animation: 'slide-in-up'
        }).then(function(modal) {
            $scope.displayhmodal = modal;
            $scope.modal = modal;
        });
        $scope.openDisplayModal = function() {
            $scope.displayhmodal.show();
        };
        $scope.closeModal = function() {
            $scope.modal.hide();
        };
        //Cleanup the modal when we're done with it!
        $scope.$on('$destroy', function() {
            $scope.modal.remove();
        });
        // Execute action on hide modal
        $scope.$on('modal.hidden', function() {
            // Execute action
        });
        // Execute action on remove modal
        $scope.$on('modal.removed', function() {
            // Execute action
        });

        $scope.data = {
            font_size: ''
        }

        $scope.save_settings = function( data ) {
            $localStorage.theme_data = data;
            $scope.theme = $localStorage.theme;
            console.log($scope.theme)
        }

})

如何更改stylesheet_link_tag以显示所选主题

<link ng-href="css/{{theme}}.css" rel="stylesheet">

1 个答案:

答案 0 :(得分:0)

尝试在$ rootScope上设置主题属性:

.controller("SettingsCtrl", function($scope, $state, $ionicModal, $localStorage, $rootScope) {
   .....
   $scope.save_settings = function( data ) {
        $localStorage.theme_data = data;
        $rootScope.theme = $localStorage.theme;
        console.log($rootScope.theme)
    }