相关疑难解决方法(0)

AngularJS中范围原型/原型继承的细微差别是什么?

API参考范围页面说:

范围可以从父范围继承.

开发者指南范围页说:

范围(原型)从其父范围继承属性.

那么,子范围是否始终从其父范围继承原型?有例外吗?当它继承时,它是否总是正常的JavaScript原型继承?

javascript inheritance prototype prototypal-inheritance angularjs

1018
推荐指数
3
解决办法
15万
查看次数

单击元素外部时触发事件的指令

我知道有很多问题要问类似的事情.但没有人真正解决我的问题.

我正在尝试构建一个指令,当鼠标点击当前元素之外时,该指令将执行表达式.

为什么我需要这个功能?我正在构建一个应用程序,在这个应用程序中,有3个下拉菜单,5个下拉列表(如选中).所有这些都是角度指令.让我们假设所有这些指令都不同.所以我们有8个指令.并且所有这些都需要相同的功能:当单击元素时,需要隐藏下拉列表.

我有2个解决方案,但都有问题:

解决方案A:

app.directive('clickAnywhereButHere', function($document){
  return {
    restrict: 'A',
    link: function(scope, elem, attr, ctrl) {
      elem.bind('click', function(e) {
        // this part keeps it from firing the click on the document.
        e.stopPropagation();
      });
      $document.bind('click', function() {
        // magic here.
        scope.$apply(attr.clickAnywhereButHere);
      })
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

以下是解决方案A的示例:单击此处

当您单击第一个下拉列表,然后单击第二个输入时,第一个应该隐藏但不是.

解决方案B:

app.directive('clickAnywhereButHere', ['$document', function ($document) {
    directiveDefinitionObject = {
        link: {
            pre: function (scope, element, attrs, controller) { },
            post: function (scope, element, attrs, controller) {
                onClick = function (event) {
                    var …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

53
推荐指数
2
解决办法
6万
查看次数

如何在浏览器窗口中的任何位置单击时设置变量?

我的网站上有一个由下拉菜单控制的下拉菜单ng-show.当用户点击按钮时,他们会看到下拉列表.当他们再次点击时,隐藏下拉列表:

<div class="button" ng-click="show = !show">Click Me</div>
<div ng-show="show" ng-init="show = false">
    <div>You can see me now!</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,show如果用户点击窗口中不是带有"按钮"类的div的任何地方,我想要的是设置为false.我怎样才能做到这一点?

angularjs

7
推荐指数
1
解决办法
8707
查看次数

Angular.js关闭,点击任何地方但在元素上

这很常见,比如你在这里点击stackoverflow上的收件箱.我会打电话给那个对话框或任何被打开的东西.

现在有两种方法可以解决这个问题,

  1. 你创建了一个不可见的叠加层,其中只有你打开的元素有更大的zindex,你通过点击叠加来关闭你的东西
  2. 单击文档上的事件,然后单击是否单击了您的项目或其外部,在这种情况下,您关闭了您的项目.

在任何一种情况下,我都希望ng-class用来添加/删除显示/隐藏事物的类.

现在我将如何使用angular进行此操作,因此它可以用于我可能添加的任何组件(事物).这不像我有单一的模态,我可能有不同的组件,具有不同的html结构,定位和东西.

哪种方法会更好,记录事件,重叠或其他什么呢?

由于angular实际上并没有对dom的任何引用,因此,文档方法可能是个问题,因为我无法确定是否点击了thing元素?除非我给所有的东西都是同一个班级..

另一方面,叠加方法不需要任何对dom元素的引用.

两种方法都需要在rootScope上使用一个唯一的var ng-class才能工作..这带来了是否使用ng-class或自定义的问题.

无论如何只是把我的想法扔到那里,也许我从一开始就认为它是错的,有没有人以前处理过这个?

javascript events overlay angularjs

4
推荐指数
1
解决办法
9674
查看次数