【发布时间】:2014-10-04 23:02:56
【问题描述】:
这里是新手网络开发人员。
我想知道为什么this fiddle 不起作用。当您单击下拉菜单中的链接时,我希望会出现警报,但没有出现。标记为“yell”的按钮提供了所需的行为,但它不是下拉元素。
Javascript
function apiCtrl($scope) {
$scope.fish = [
'blum',
'blum',
'shub'
];
$scope.yell = function() {
alert("HEY");
};
}
HTML
<div ng-controller="apiCtrl">
<button ng-click='yell()'>yell</button>
<br>
<input class='autocompleted' type='text'/>
<ul>
<li ng-repeat='f in fish' tabIndex='-1'>
<a ng-click="$parent.yell()"> {{f}}
</a>
</li>
</ul>
</div>
CSS
input.autocompleted + ul {
display: none;
}
input.autocompleted:focus + ul {
padding: 2px;
margin: 1px;
list-style-type: none;
display: block;
position: absolute;
z-index: 2;
background-color: #FFF;
border: 1px solid #000;
}
我已经寻找了几个解决方案,虽然有很多,但没有一个包含没有经验的 css 的附加难题。StackOverflow 不允许我在一篇文章中包含两个以上的链接,所以 here是我看过的解决方案之一。
如你所见,我使用 $parent 来躲避 ngRepeat 指令的嵌入。
我尝试使用$rootScope 创建对yell() 的全局访问,正如另一个解决方案所建议的那样。没有骰子。
删除 CSS 使其工作,但它破坏 Angular 的原因是什么?
【问题讨论】:
-
为了让点击发生,mousedown 和 mouseup 必须发生在同一个元素上。在您的情况下,当鼠标按下时它只是隐藏了..您可以在这里看到它jsfiddle.net/aktobc0p
标签: javascript css angularjs angularjs-directive