我使用此功能从我的控制器发回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,但我把它改成了一个跨度,看看是否改变了什么。
答案 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>
我稍后会发展。希望它能适用于您的情况。