angular ng click事件未启动

angular ng-click event not firing

本文关键字:启动 事件 click ng angular      更新时间:2023-09-26

我有一个函数,当被调用时,它会将某些html添加到我的页面中:

function htmlAppend(i)
       {
        dynamicHtml = dynamicHtml + '<div id="list_item_wrapper">' + 
        '<div class="list_item_template" id="list_image_wrapper">' +
        '<img class="list_image_style" ' +
        'src=" ' + jsonData.cars[i].ImgURL  + ' "/>' +
        '</div>' +
        '<div class="list_item_template white_font car_details_wrapper">' +
         jsonData.cars[i].CarName+ '<br>' +
         jsonData.cars[i].Brand  + '<br>' +
         jsonData.cars[i].Model  + '<br>' +
         jsonData.cars[i].FuelType + '<br>' + 
        '<span style="font-size:40px;">' +
        '&#8377; ' + jsonData.cars[i].Price + 
        '</span> <br> ' +
        jsonData.cars[i].Experience +
        '<input type="button" id="buy_now_btn" class="button1" ng-click="alert("hi")">Buy</button>' +
        '</div>' +
        '</div>'
       }

问题:现在这个html在我的页面中正确显示,但由于某种原因,当单击按钮时,ng-click事件不会激发,当我用onClick替换它时,onClick就会激发。我不明白ng-click为什么不开火,有人能帮忙吗?

附加信息htmlAppend是服务的private函数,在某些用户输入后从控制器调用。

不,你不能只在点击时写alert。当您在ng-click指令上写入alert("hi")时,它会自动在控制器中查找一个名为$scope.alert()的方法。这就是onClick工作的原因,因为它只是一个普通的旧JavaScript,而ng-click涉及范围绑定。

在您的控制器中,写下:

  $scope.alert=function(string){
    alert(string);
  };

你可以走了。这是正在工作的plnkr。

编辑:没有仔细阅读你正在动态绑定它。更新了plnkr。

对于这种情况,您需要编译它:

  var $el = $('<button ng-click=' + 'alert("hello")' + '>I am a button</button>');
  $compile($el)($scope).appendTo('#testing');

其中#testing可以是您想要的任何DOM选择器。

不过,重点是告诉您不能只在ng-click指令中编写alert

增加了额外的好处:不要在控制器中编写DOM操作逻辑。您可能需要使用指令。