Javascript 如何让angularjs下拉列表刷新?

Javascript 如何让angularjs下拉列表刷新?,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我有一个按钮,在点击时显示下拉列表。单击下拉列表的每个元素都会生成一个ui对话框。打开ui时,将选中下拉列表中的相应项。再次单击下拉列表中的元素将关闭对话框,并在列表中取消选中它 也可以使用对话框上的“X”按钮关闭对话框。我需要这个关闭操作来取消选中下拉列表中相应的元素。这是我在控制器内部拥有的: <div class="dropdown"> <button type="button" class="btn btn-default dropdown-toggle" st

我有一个按钮,在点击时显示下拉列表。单击下拉列表的每个元素都会生成一个ui对话框。打开ui时,将选中下拉列表中的相应项。再次单击下拉列表中的元素将关闭对话框,并在列表中取消选中它

也可以使用对话框上的“X”按钮关闭对话框。我需要这个关闭操作来取消选中下拉列表中相应的元素。这是我在控制器内部拥有的:

<div class="dropdown">
    <button type="button" class="btn btn-default dropdown-toggle" style="width:100px">
      <img src="/UIDemo/images/maps-icon.png" style="padding-right:3px" />
       Data Grid 
      <span class="caret"></span>
    </button>
    <ul class="dropdown-menu" role="menu">
        <li><a href="#" ng-click="showRouteFeature = !showRouteFeature; 
            openCloseGrid('routeFeature', showRouteFeature);">
          <span ng-class=
            "{'glyphicon glyphicon-ok icon-ok check-mark': showRouteFeature, 
              'glyphicon no-icon': !showRouteFeature}">
          </span>
          <span class="text">Route Feature</span></a></li>
    </ul>
</div>
格式有点粗略,但我已经尽力了。当我单击下拉列表中的某个选项时,它会设置通过单击showRouteFeature建立的切换,从true切换到false,反之亦然。单击对话框上的“X”时,它会将$scope.showRouteFeature设置为false,这将取消选中下拉列表中的元素。我可以在控制台中看到,当我单击“X”时,$scope.showRouteFeature实际上设置为false


我在这个问题上发现了这个问题和这篇文章,这就是为什么我在将变量设置为false后使用$scope.apply。然而,这并不能刷新我的下拉列表。如果您有任何见解,我们将不胜感激。

这可能不是您的问题,但我怀疑可能是这样,因此:

警告一句,当您在示例中直接在作用域上使用原语时,您最好非常清楚自己在做什么。一般来说,应该避免这种情况。原因是,如果创建了子作用域,原型继承将使子作用域上的属性不会反映在父作用域上。许多内置的角度指令创建子作用域ng repeat、ng if、ng开关。您的代码中没有显示ng repeat,但如果它按照您的解释工作,我怀疑您的实际代码中有它。因此,将属性放置到对象中

要想知道这是否是您的问题,最好将{{showRouteFeature}}放在HTML的最顶层,然后将其放在DOM中更深的几个层次上。如果它们的值开始不同,则存在范围继承问题

有关更多信息,请参见此处的第一点:

Try:$scope.applyfunction{$scope.showRouteFeature=false;};不起作用,但是谢谢你的建议。你能展示更多的代码吗?我不知道发生了什么。。。
$(document).on('click', '.ui-dialog-titlebar-close', function () {
    $scope.showRouteFeature = false;
    $scope.apply();
 });