" Object.getOwnPropertyNames"在Angular.js中,表达式不起作用

时间:2015-05-27 08:25:46

标签: angularjs

我在控制器范围内有一个属性,它是一个对象。让我们说$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表达式中不支持哪些函数?

谢谢,

1 个答案:

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

演示:http://plnkr.co/edit/RgEHJCtoijsnLm0BnGCh