我有一个函数在调用时将某些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;">' +
'₹ ' + 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
函数,在某些用户输入时从控制器调用。
答案 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操作逻辑。您可能希望使用指令。