Ich benutze eckiges Material 1 und möchte sidennave ausblenden, wenn die Fenstergröße nicht "gt-sm" erfüllt. Unten ist der Controller-Code.angular js - scope.apply funktioniert nicht wie erwartet
.controller('mainpageController',mainpageAction);
function mainpageAction($scope,$mdMedia,$window){
//state variable for mainpage.
$scope.sideNavVisibility = $mdMedia('gt-sm');
/* function definition for mainpage; bind this function using ng-click when user click on side menu */
$scope.showSideNav = function(defaultDisplay){
$scope.sideNavVisibility = true;
};
angular.element($window).bind('resize', function(){
console.log($mdMedia('gt-sm'));
$scope.$apply(function() {
$scope.sideNavVisibility = $mdMedia('gt-sm');
});
});
}
Unten ist die HTML-Vorlage, wo ich es verwende.
<body md-theme="mainpage" ng-controller="mainpageController">
<div layout="row" layout-fill="true">
<md-sidenav class="md-sidenav-left" md-is-locked-open="{{sideNavVisibility}}" flex="none">
In der Konsole bekomme ich den richtigen Wert. Wenn die Bildschirmseite größer als 960px ist, wird der Wert "true" oder "false" protokolliert. Aber die Änderung wird immer noch nicht angewendet.
Hier im Grunde möchte ich sidentenav zeigen, wenn die Bildschirmgröße mehr als 960px ist, d. H. "GT-SM" oder wenn nicht größer als "GT-SM" dann wenn Benutzer auf Seitenmenü-Symbol klicken.
Wenn Sie einfach nur zeigen wollen/verstecken, dann sollten Sie 'ng-show' oder' ng-hide' – EvilZebra