AngularJS控制器中的函数的AddEventListener

时间:2018-01-09 16:51:00

标签: javascript angularjs dom

这是我的问题:我必须向DOM object添加一个事件监听器,将其绑定到AngularJS function控制器内的函数。

以下是代码:

HTML

<body ng-app="myApp">
  <div ng-controller="myController">
    <table>
      <ul id="main_ul">
      </ul>
    </table>
  </div>
</body>

JS

var day = document.createElement('li');
day.innerHTML = 'Click Here';
day.myDate = new Date();
document.getElementById('main_ul').appendChild(day);
day.addEventListener("click", onClickAgenda, false);

AngularJS

var module = angular.module('myApp', []);
module.controller('myController', function($scope) {
    function onClickAgenda() {
        $scope.selectedDate = this.myDate;
    }
});

我收到函数onClickAgenda()未定义的错误。

我知道这可以通过将函数声明为:

来解决
function onClickAgenda() {
  console.log(this.myDate);
}

在我的JS文件中。但我需要它在控制器内部。这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以对选择框使用ng-options,并使用范围数组填充该选项。

ng-options

然后你应该使用ng-click on element而不是addEventListener https://docs.angularjs.org/api/ng/directive/ngClick

ng-options仅适用于选择框(我给出了错误答案)

对于您的情况,您可以在范围数组上使用ng-repeat,并从控制器动态地将项目推送到数组。

<ul id="main_ul" ng-repeat="listItem in collection">
   <li ng-click="handlerFunction()">{{listItem}}</li>
</div>