我在控制器范围内有一个属性,它是一个对象。让我们说$scope.value = {a: 'a', b: 'b'};
。
在页面中,我想检索此对象的名称,以便我使用{{Object.getOwnPropertyNames(value) | json}}
。但我空了。
如果在控制器中我有$scope.names = Object.getOwnPropertyNames($scope.value);
并且在使用的页面中{{names | json}}
我得到了正确的结果。
您可以在plunker http://plnkr.co/edit/xJKCunEGtiwsNahGIZo3?p=preview
中找到该演示我的问题是,为什么会这样? Angular.js表达式中不支持哪些函数?
谢谢,
答案 0 :(得分:2)
$ scope的作用类似于控制器和视图之间的粘合。 AngularJS(视图中的{{}}
)的绑定只能应用于$ scope对象。这就是为什么在你的HTML中调用javascript函数不会起作用。
如果您不想将Object.getOwnPropertyNames
绑定到范围或想要重新使用它,则可以使用过滤器。过滤器用于转换和格式化您的数据:
app.filter('objectPropery', [function(){
return function (object) {
return Object.getOwnPropertyNames(object);
};
}]);
在你的视图中使用它(html):
<h1>in expr: {{value | objectProperty | json}}</h1>