2014-10-29 23 views
1

发现了一些密切的问题,但不完全是我需要问的问题。

我有多个ng单击事件的元素。 对于其中大部分(特定类别),我不需要在点击后实际运行角度摘要循环。单击这些元素的结果不会影响任何范围变量(比如说,他们只是打印出一个console.log)。

我想要做的是有条件地对ngClick做出反应,其中某个特定css类的元素在末尾不会有自动$ apply。

编辑:

我最终什么事做了更换NG单击,NG-的mouseenter和NG-鼠标离开与相应的JavaScript替代。

我这样做有两个原因: 1.我实际上并没有影响这些点击上的范围变量,所以我不需要在每个之后运行摘要(我有鼠标,所以您可以对生成的图像进行成像很多消化周期没有理由)。 2.这是我从其他源(ng-bind)的页面加载顺序后期加载的内容,因此它必须通过角度进行消毒,然后进行编译。这花了一段时间(差不多一秒),因为我有很多这样的链接,这阻止了内容的显示。

+0

你有不使用'对这些特定元素NG-click'选项,而是使用'.on('click',函数来绑定(){})'而不是? – Brett 2014-10-29 13:28:00

回答

3

虽然我强烈建议不要这样做,因为在您的应用程序中应用$应该不会影响任何东西(甚至性能)。你必须为此创建自己的指令。

HTML

<div data-no-apply-click="myFunction()"> 
</div> 

的Javascript

.directive('noApplyClick', function ($parse) { 
    return { 
     compile : function ($element, attr) { 
      var fn = $parse(attr['noApplyClick']); 
      return function (scope, element, attr) { 
       element.on('click', function (event) { 
        fn(scope, { 
         $event : event, 
         $element : element 
        }); 
       }); 
      }; 
     } 
    }; 
}); 

的jsfiddlehttp://jsfiddle.net/gj54bjsh/

+1

谢谢你的及时答复,这似乎是一个很好的答案。我不明白为什么这不会影响性能,我注意到在每次点击时,角度都会运行一个摘要循环。会不会影响性能? – 2014-10-29 13:21:12

+0

如果你可以继续并接受/ upvote它! :) – 2014-10-29 13:22:39

+1

我不明白为什么这不会影响性能,我注意到在每次点击时,角度都会运行一个摘要循环。会不会影响性能? – 2014-10-29 13:31:43