AngularJS 过滤数据绑定

AngularJS Filter Data Binding

我有一个自定义过滤器,我使用 $sce.trustAsHtml 来 return 一个 html 字符串。在 template/view 中,我使用 ng-bind-html 指令并将过滤器传递给如下:

<div ng-bind-html="userAgent | geoCode:business"></div>

在我的过滤器中,我有一个内部函数,它接受一个输入,在我的例子中是业务模型,它从业务模型中获取属性,一个 mongoosejs 模型,并生成一个格式化的字符串,用于生成和 html一个标签:

'<a href="some_url_i_create" ...>'+ myFormattingInnerFunction(business) +'</a>';

奇怪的是,如果我使用这个函数,有几个字段会return编辑为undefined/blank。但是,如果我直接访问变量 a 如下:

'<a href="some_url_i_create" ...>'+ business.prop1 + business.prop2+ ... +'</a>';

然后找到并输出所有属性。有什么想法吗?

P.S。该模型是通过 AJAX 请求检索的,该请求又使用 mongoosejs 在本节的 angular 控制器内部检索数据。

当您调用函数时,当所有脚本都已加载且第一个 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>';