我有一个自定义过滤器,用于使用$ sce.trustAsHtml返回一个html字符串。在模板/视图中,我使用ng-bind-html指令并将过滤器传递给如下:
<div ng-bind-html="userAgent | geoCode:business"></div>
在我的过滤器中,我有一个内部函数,它接受我的情况下的输入,业务模型,它从业务模型,mongoosejs模型中获取属性,并生成一个格式化的字符串,用于生成和标记一个标记: / p>
'<a href="some_url_i_create" ...>'+ myFormattingInnerFunction(business) +'</a>';
奇怪的是,如果我使用此函数,则会将几个字段作为undefined / blank返回。但是,如果我直接访问变量a:
'<a href="some_url_i_create" ...>'+ business.prop1 + business.prop2+ ... +'</a>';
然后找到并输出所有属性。有什么想法吗?
P.S。该模型是通过AJAX请求检索的,该请求依次使用mongoosejs来检索该部分的角度控制器内的数据。
答案 0 :(得分:3)
当您调用该函数时,您将在第一个渲染事件中访问业务对象,此时加载所有脚本并进行第一次DOM操作。
但是当你直接访问业务对象时,angular会将值放入第一个渲染事件和所有摘要事件的视图中,当然还有其他渲染事件。
您可能需要考虑使用$ scope。模板中的attr也可以在回调中呈现和调用格式化的字符串值方法。
在JS中:
.success(function(data){
business=JSON.parse(data);//Iguess
$scope.formatedtext= myFormattingInnerFunction(business);
$scope.$apply();// If you use an angular libs callback this probably not needed.
})
在模板中:
'<a href="some_url_i_create" ...>'+ formatedtext +'</a>';