javascript - AngularJS - 当使用指令生成标记时,无法使用 ng-click 执行方法

标签 javascript angularjs angularjs-directive angularjs-scope

我已经创建了我的分页器指令:

myApp.directive("paginator", function($timeout) {
  return {
  restrict: "E",
  link: function (scope, element, attr) {

    var totalProducts = scope.productsConfig.total,
        MAX_PER_PAGE = +(scope.productsConfig.limit),
        pagesQty = Math.ceil(totalProducts/MAX_PER_PAGE),
        markup = "";

    //Add initial markup ul open tag
    markup += "<ul class='ch-pagination'>";

    //Add the previous button if needed
    if(scope.lastStatus.p > 1) {
        //Then add the previous button
        var previousPage = +(scope.lastStatus.p) - 1;

        markup += "<li><a ng-click='goToPage(" + previousPage + ")'>Previous</a></li>";
    }

    //Add the elements
    for (var i = 1; i <= pagesQty; i++) {

        if(scope.lastStatus.p == i){
            var activeClass = "class='ch-pagination-current'";
        } else {
            activeClass = "";
        }

        markup += "<li " + activeClass + "><a ng-click='goToPage(" + i + ")'>" + i + "</a></li>"
    }

    //Add the next element if any
    if(scope.lastStatus.p < pagesQty) {
        //Then add the previous button
        var nextPage = +(scope.lastStatus.p) + 1;

        markup += "<li><a ng-click='goToPage(" + nextPage + ")'>Next</a></li>";
    }

    //Close the paginator
    markup += "</ul>";

    //Inject the code into the wrapper
    $(".inventory-paginator").html(markup);

}

} });

注入(inject)我的方法的行(以及其他方法):

markup += "<li " + activeClass + "><a ng-click='goToPage(" + i + ")'>" + i + "</a></li>"

然后在单击生成的标记时调用我的方法 goToPage。当使用分页器时,试图点击一些页面按钮,没有任何反应,ng-click 永远不会执行 goToPage 方法,即使生成的标记是:

 "ng-click='goToPage(2)'"

主 Controller 内部的方法:

$scope.goToPage = function (intPage) {
    var requestUrl = $scope.buildSearchRequestUrl(intPage);
    console.log("goToPage requestUrl: " + requestUrl);

    //Request the data, on success show the table again
    $http.get(requestUrl)
    .success(function (data) {
        $scope.inventoryData = data;
    }).error(function (data) {
        if(window.console){
            console.log("The article couldnt be paused");
        }
    });
}

我猜我错过了一些链接,但无法弄清楚在哪里或为什么。

提前致谢

吉列尔莫

最佳答案

你试过编译它吗?每当你想从 HTML 中调用它时,都应该编译一个指令。

参见 http://docs.angularjs.org/guide/directive

关于javascript - AngularJS - 当使用指令生成标记时,无法使用 ng-click 执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926142/

相关文章:

javascript - Angular $location.state() 与 history.pushState 行为

javascript - 仅当 $scope.$apply() 尚未进行时,如何调用

javascript - $scope.$watch 在选项卡内不起作用

angularjs - 如何要求至少 1 个带有 checklist-model 的复选框来进行 AngularJS 表单验证?

javascript - angularjs:在指令内创建指令

javascript - angularjs:将过滤后的数组传递给指令

javascript - d3.js 气泡图 : Make div scrollable

javascript - Bootstrap Datepicker 不清除日期范围

javascript - Backbone.js View 和模型相关性?

javascript - 如何等待资源加载