AngularJS过滤数据绑定

时间:2015-04-09 14:24:16

标签: javascript angularjs binding filter

我有一个自定义过滤器,用于使用$ 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来检索该部分的角度控制器内的数据。

1 个答案:

答案 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>';