Javascript ngShow赢得';t单击时更新指令

Javascript ngShow赢得';t单击时更新指令,javascript,angularjs,Javascript,Angularjs,我有以下指令,可在单击时打开行菜单: app.directive('rowDropdownMenuDirective', function(){ return { restrict: 'AE', scope: '@', replace: false, link: function(scope){ //close row menus

我有以下指令,可在单击时打开行菜单:

app.directive('rowDropdownMenuDirective', function(){
        return {
            restrict: 'AE',
            scope: '@',
            replace: false,
            link: function(scope){
                //close row menus
                scope.menuIndex = -1
                scope.showMenu = function($index){
                    if(scope.menuIndex == $index){
                        scope.menuIndex = -1
                    }else{
                        scope.menuIndex = $index
                    }
                    console.log(scope.menuIndex == $index)
                }
            },
            //templateUrl: 'template.html'
            template: "<div class='options-menu'>" +
            "<a href='#' title='Options' class='options-menu-toggle' ng-class='{openWidgetButton: menuIndex == $index}' " +
            "ng-click='showMenu($index)'>Options</a>" +
            "<ul class='options-menu-widget' ng-show='menuIndex == $index'>" +
                "<li><a href='#'>Approve</a></li>" +
                "<li><a href='#'>Deny</a></li>" +
                "<li><a href='#'>Review</a></li>" +
            "</ul></div>"
        }
    })
app.directive('rowDropdownMenuDirective',function(){
返回{
限制:“AE”,
范围:“@”,
替换:false,
链接:功能(范围){
//关闭行菜单
scope.menuIndex=-1
scope.showMenu=函数($index){
if(scope.menuIndex==$index){
scope.menuIndex=-1
}否则{
scope.menuIndex=$index
}
console.log(scope.menuIndex==$index)
}
},
//templateUrl:'template.html'
模板:“”+
"" +
“
    ”+ “
  • ”+ “
  • ”+ “
  • ”+ “
” } })
单击触发
scope.show菜单
功能后,将触发ngShow:

ng show='menuIndex==$index'

但是,每当指令中的
menuIndex
值在单独的单击事件中更新时,所有其他指令实例中的
menuIndex
值都不会更新,因此ngShow不会更新

编辑:
ng class='{openWidgetButton:menuIndex==$index}'
更新了单独的点击事件,因此我相信这个问题是特定于ngShow的

我希望看到ng重复出现,因为$index,但您的指令中没有。那感觉很危险。。。也许最好将$index作为参数传递到指令中,而不是假设它周围有一个ng repeat。我的指令是获取ng repeat'd
是的,这很危险。不知道ng repeat和它的$index会发生什么,以及在这个指令中是如何使用的。似乎是危险的结合。理想情况下,指令应该是“即插即用”的,即可以在任何地方删除,而不依赖于其他地方的内容。我如何补救这种情况?请在一个范围内尝试。在您的范围内应用$apply.menuIndex初始化