是否有可能将ng-click注入角度为ng-binded的html div?

时间:2018-01-11 10:28:08

标签: javascript html angularjs

我使用此功能从我的控制器发回html:

$scope.filterLocation=function(obj){
 var loc = $filter('filter')( $scope.locationss, {'product_code':obj});
 var htmlstring = "";
 angular.forEach(loc, function(value, key) {
    htmlstring = '<div ng-click="locationModal()">' + htmlstring + value.location_description + '</div>';
 })

 return $sce.trustAsHtml(htmlstring);

}

然后我有这个html来显示位置列表:

<td><span ng-bind-html="filterLocation(l.productcode)" style="cursor: pointer;"></span></td>

问题是,正如您在控制器中看到的那样注入'<div ng-click="locationModal()">',当我查看检查器时,函数是否正确:

<span ng-bind-html="filterLocation(l.productcode)" style="cursor: pointer;" class="ng-binding"><div ng-click="locationModal()">A5AL</div></span>

但是当我尝试点击它时我没有得到任何结果,是因为它在ng-bind-html里面?这是一个div,但我把它改成了一个跨度,看看是否改变了什么。

1 个答案:

答案 0 :(得分:0)

我现在正在快速做到这一点,但希望你能有一个答案的开头。

你可以这样做一些解决方法:

$scope.htmlstrings = [];
var string = {
    htmlLoc: ''
};

angular.forEach(loc, function(value, key) {
    string.htmlLoc= string.htmlLoc+ value.location_description;
    $scope.htmlstrings.push(string);
})

我不明白你为什么要做htmlstring = htmlstring + value.location_description;

然后:

<span ng-init="filterLocation(l.productcode);" ng-repeat="htmlstring in htmlstrings">
    <div ng-click="locationModal();" ng-bind="htmlstring.htmlLoc"></div>
</span>

您可以使用以下代码将其更改为返回方式:<span ng-init="htmlstrings = filterLocation(l.productcode);" ng-repeat="htmlstring in htmlstrings">

不使用var string = {}var string = '' html看起来像这样:

<span ng-init="htmlstrings = filterLocation(l.productcode);" ng-repeat="htmlstring in htmlstrings">
    <div ng-click="locationModal();" ng-bind="htmlstring"></div>
</span>

我稍后会发展。希望它能适用于您的情况。