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初始化