为了账号安全,请及时绑定邮箱和手机立即绑定

为什么点击多个expander的时候上面的没有收起来,每次点击是自己的在隐藏和显示

html部分

<div ng-app="myApp" ng-controller="clickShow" ng-cloak>
    <expander expander-title="expander.title" ng-repeat="expander in expanders">
        {{expander.text}}
    </expander>
</div>


js部分

var app=angular.module("myApp",[]);
app.directive("expander",function(){
    return{
        restrict:"EA",
        replace:true,
        transclude:true,
        scope:{
            title:"=expanderTitle"
        },
        template:"<div >"
        +"<div ng-click='toggle()'>{{title}}</div>"
        +"<div ng-show='showMe' ng-transclude></div>"
        +"</div>",
        link:function(scope,element,attrs){
            scope.showMe=false;
            scope.toggle=function toggle(){
                scope.showMe=!scope.showMe;
            }
        }
    }
})
app.controller("clickShow",function($scope){
    $scope.expanders=[
        {title:"1dfs",text:"dfadfad"},
        {title:"2dfs",text:"dfadfad"},
        {title:"3dfs",text:"dfadfad"}
    ]
});

正在回答

1 回答

因为scope.showMe=!scope.showMe;这个是私有范围的设置,所以每个expander 都有自己的scope.showMe,只有点击哪个expander才会发生scope.showMe的变化

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
使用AngularJS开发下一代Web应用
  • 参与学习       84591    人
  • 解答问题       74    个

“化繁为简”更简洁的开发体验,并针对企业实战进行技术答疑

进入课程

为什么点击多个expander的时候上面的没有收起来,每次点击是自己的在隐藏和显示

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信