Angularjs (初学者)如何处理卷轴上的棱角方式

Angularjs (初学者)如何处理卷轴上的棱角方式,angularjs,Angularjs,我在jquery中创建了这个流畅的菜单: 很简单,但我想用有角度的方式来做,但我不知道如何攻击它 如果我执行指令 <div stackables class="stackables"> 该指令如何知道要测量和修改哪些“可堆叠”元素 如果我在子级执行指令 <div stackable class="stackable"> 它是如何知道它的兄弟可堆叠的? 还有,如何避免订阅超过1个滚动事件 这是一个普通的初学者问题。我希望stackoverflow不会

我在jquery中创建了这个流畅的菜单: 很简单,但我想用有角度的方式来做,但我不知道如何攻击它

如果我执行指令

   <div stackables class="stackables">

该指令如何知道要测量和修改哪些“可堆叠”元素

如果我在子级执行指令

   <div stackable class="stackable">

它是如何知道它的兄弟可堆叠的? 还有,如何避免订阅超过1个滚动事件


这是一个普通的初学者问题。我希望stackoverflow不会太模糊。

您好,通常在创建指令时,您可以访问该指令所附加的DOM元素。它是link函数的第二个参数,如下所示:

link: function (scope, elem, attrs)  //elem is the dom element
现在,您知道您可以做任何您想做的事情,将指令放在父节点或子节点上。但在我看来,将指令放在父节点上将是一种“有角度的方式”。要回答您的问题:

该指令如何知道要测量和分析哪些“可堆叠”元素 修改

您需要熟悉(在文档中查找transclude)。基本上,在使用transclude时,DOM元素的内部子元素将被转发到指令。例如:

// Template
<stackables>
  <li class="stackable">Item 1</li>
  <li class="stackable">Item 2</li>
  ...

// Directive
directive('stackables', function() {
return {
  restrict: 'E',
  transclude: true, <- Here it is
  scope: {},
  template: '<ul class="stackables" ng-transclude></ul>', <- do not miss the ng-transclude here
  link: function (scope, elem) {
    //1. elem is the ul dom node
    //2. You can add an event listener from here
    //3. You can find the li dom with something like
    //elem.find('li');
    ...
//模板
第1项
第2项
...
//指示
指令('stackables',function()){
返回{
限制:'E',
是的,