簡體   English   中英

如何在我的情況下向元素添加點擊事件?

[英]How to add click event to element in my case?

我有一個類似以下的指令

var app = angular.module('app', ['ui.bootstrap', '']);

app.directive('myNav', function () {
    return {
        restrict: 'E',
        templateUrl: "directives/directive-test.html",
        replace: true,
        link: function (scope, element, attrs) {
            //I want to add click event listen to li element
               element.on('mousedown', function(){
                    alert('test') //works on all ul but not individual li
                })
        }
    };
})

指令-test.html

<ul>
    <li class='nav-btn' ng-click='open()'>
        //contents
    </li>
    <li class='nav-btn' ng-click='open()'>
        //contents
    </li>
    <li class='nav-btn' ng-click='open()'>
        //contents
    </li>
</ul>

我不確定如何找到li元素並在指令內分配click事件。

有人可以幫我嗎? 謝謝。

如果您嘗試創建類似於手風琴菜單的內容,請查看ui-bootstrap http://angular-ui.github.io/bootstrap/#/accordion

如果不是,為什么不只給open()提供一個參數,以便知道單擊了哪個元素(如果需要ng-repeat,則可以使用$ index)。

<ul>
    <li class='nav-btn' ng-click='open(0)'>
        //contents
    </li>
    <li class='nav-btn' ng-click='open(1)'>
        //contents
    </li>
    <li class='nav-btn' ng-click='open(2)'>
        //contents
    </li>
</ul>

現在scope.open將知道單擊了哪個元素。 或使用ng-repeat:

<ul>
    <li class="nav-btn" ng-repeat="el in navElems" ng-click="open($index)">
        {{el.contents}}
    </li>
</ul>

其中navElems將是對象數組,例如:

scope.navElems = [
  { contents: "link1" },
  { contents: "link2" },
  { contents: "link3" }
];

還有一個示例打開功能:

scope.open = function(index) {
  var el = navElems[index];
  // do stuff with el
};

您應該能夠做到這一點

var app = angular.module('app', ['ui.bootstrap', '']);

app.directive('myNav', function () {
    return {
        restrict: 'E',
        templateUrl: 'directives/directive-test.html',
        replace: true,
        link: function (scope, element, attrs) {
            element.find('li').on('mousedown', function(){
                alert('test') 
             });
        }
    };
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM