AngularJS:模板添加ng点击不开火

AngularJS: Template-added ng-click does not fire

本文关键字:开火 ng 添加 AngularJS      更新时间:2023-09-26

我在指令的模板中动态添加了ng-click,但它似乎根本没有启动(或由angular编译)。这是我档案的要点。

虽然我对作用域有问题,但我认为当前的问题不在作用域。但是,请随意包括我当前范围选项可能出现的任何问题。

我的HTML中有这样的结构:

main element | MainCtrl
    | directive 1 | ss-pagination
        | directive 1.1 | ss-pagination-previous
        | directive 1.2 | ss-pagination-next

我有3个指令,其中1个是模板中包含ng-click的2个指令的父指令。原因是,我有一个主要的分页指令,其中包含分页的设置|函数。另外两个用作下一个|上一个按钮。

控制器代码样式似乎与指令不同,因为我目前正在重构。

我想我发现了问题所在。将您的pagination-prev.directive.js更改为使用controllerAs,这样您就可以从视图中调用控制器的函数goToPreviousPage,如下所示:

(function(angular, undefined) {
  function paginationPrevious() {
    return {
      restrict: 'EA',
      replace: true,
      transclude: true,
      require: '^ssPagination',
      template: getTemplate,
      controller: 'PaginationPreviousCtrl',
      controllerAs: 'prevCtrl'
    };
    function getTemplate(element, attrs) {
      return [
        '<div ng-transclude ',
        'ng-click="prevCtrl.goToPreviousPage()">',
        '</div>'
      ].join('');
    }
  }
  angular
    .module('app')
    .directive('ssPaginationPrevious', paginationPrevious);
})(angular);