角度ng-click事件未触发

时间:2016-07-30 11:24:38

标签: javascript html angularjs

我有一个函数在调用时将某些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函数,在某些用户输入时从控制器调用。

1 个答案:

答案 0 :(得分:2)

不,你不能只在你的ng-click上写$values=array_column($array,"country_id"); $country_string=implode($values); 。当您在ng-click指令上编写alert时,它会自动查找控制器中名为alert("hi")的方法。这就是为什么$scope.alert()有效,因为它只是普通的旧JavaScript,而onClick涉及范围绑定。

在您的控制器中,写下:

ng-click

你很高兴。这是工作plnkr

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

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

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

其中 var $el = $('<button ng-click=' + 'alert("hello")' + '>I am a button</button>'); $compile($el)($scope).appendTo('#testing'); 可以是您想要的任何DOM选择器。

还有一点是告诉你,你不能只在#testing指令中写alert

添加了奖励:不要在控制器内部编写DOM操作逻辑。您可能希望使用指令。