Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ng show don';t隐藏元素,当它';法尔西_Angularjs_Angular Material - Fatal编程技术网

Angularjs ng show don';t隐藏元素,当它';法尔西

Angularjs ng show don';t隐藏元素,当它';法尔西,angularjs,angular-material,Angularjs,Angular Material,我使用下面的代码(角度+材料)。一切正常,但当ng show的表达式更改为false时,元素仍然可见 单击md工具栏中的md按钮,console将记录更改的值(false),但元素md内容仍然可见 你能帮我解决这个问题吗?如果需要更多的细节,我可以放在这里 更新:当我将按钮移动到模板templates/sidebar/template.html时,它工作正常 已解决:我在控制器中使用了$rootScope而不是$scope,一切正常 HTML: <body layout="column"&

我使用下面的代码(角度+材料)。一切正常,但当
ng show
的表达式更改为false时,元素仍然可见

单击
md工具栏中的
md按钮
,console将记录更改的值(false),但元素
md内容
仍然可见

你能帮我解决这个问题吗?如果需要更多的细节,我可以放在这里

更新:当我将按钮移动到模板
templates/sidebar/template.html
时,它工作正常

已解决:我在控制器中使用了
$rootScope
而不是
$scope
,一切正常

HTML:

<body layout="column">
    <md-toolbar layout="row">
        <div class="md-toolbar-tools">
            <md-button ng-controller="sidebar" ng-click="sidebarClose()" class="md-icon-button"><!-- hide-gt-md -->
                <md-icon aria-label="Menu" md-svg-icon="https://s3-us-west-2.amazonaws.com/s.cdpn.io/68133/menu.svg"></md-icon>
            </md-button>
            <h1><img src="img/yt.png" class="img-rounded" /> My project</h1>
        </div>
    </md-toolbar>

    <section layout="row" id="content">
        <md-content ng-controller="sidebar" ng-show="sidebarOpened" layout-padding md-scroll-y ng-include="'templates/sidebar/template.html'" style="width:304px;">        
        </md-content>

        <md-content ng-controller="homepage" flex layout-padding md-scroll-y ng-include="'templates/home/template.html'">
        </md-content>
    </section> 
</body>

带有
ng show=“sidebarOpened”
的元素位于包含按钮的
ng controller=“sidebar”
元素之外。因此,它们不使用相同的控制器实例,也不使用相同的作用域,因此写入控制器中的值不是
ng show
读取的值


主体应由主控制器处理,其中包含标志和隐藏/显示侧边栏的方法。按钮不应位于侧栏控制器内。

HA!谢谢你,伙计,我在我的控制器中使用了$rootScope而不是$scope,它很有效!!!!不要使用$rootScope,而是将按钮保留在主控制器中并使用$scope。填充$rootScope对象不是一个好做法
app.controller("sidebar", function($scope, $mdSidenav) {

    $scope.sidebarOpened = true;

    $scope.sidebarOpen = function() {
        $scope.sidebarOpened = true;  
        console.log($scope.sidebarOpened);
    };

    $scope.sidebarClose = function() {
        $scope.sidebarOpened = false;
        console.log($scope.sidebarOpened);
    };

});