角度误差解析ng-show

时间:2015-10-12 21:34:14

标签: javascript angularjs angularjs-ng-show

我在index.html中的div上有一个ng-show,它根据用户许可确定要显示的标题。这些间隙作为清除对象数组存储在$ scope.user.clearance中。 $ scope.user.clearance的结构如下:

[
    {
       'clearance':string
    }
]

导致解析错误的指令是:

<div ng-show = "user.clearance &&
        user.clearance.filter(function(e) { return e['clearance'] === 'SUPERADMIN'; }).length > 0" 
        ng-include="'/partials/components/superadmin-header.html'">
</div>

表达式:

user.clearance && user.clearance.filter(function(e) { 
     return e['clearance'] === 'SUPERADMIN'; 
}).length > 0

在jsfiddle中运行得很好:http://jsfiddle.net/6frqzwee/2/

任何想法为什么棱角都有这个困难?

1 个答案:

答案 0 :(得分:1)

因为string指令放了$watch on the expression which you provide on ng-show attribute。如果将表达式作为$parse传递,它将使用当前作用域对它们进行求值,但是当您使用属性传递函数时会抛出|错误。

最好让它工作你可以使用角度过滤器<div ng-show ="user.clearance && (user.clearance | filter: {clearance: 'SUPERADMIN' }).length > 0" ng-include="'/partials/components/superadmin-header.html'"> ,这将为您提供预期的结果,并且在解析HTML时不会抛出任何错误

(user.clearance | filter: {clearance: 'SUPERADMIN' })

如上所述语法clearance将使用范围进行评估,它将返回匹配元素的数组,其中SUPERADMIN属性值为PFQuery *localStoreQuery = [[PFQuery alloc] initWithClassName:@"MyClass"]; [localStoreQuery fromLocalDatastore]; NSArray *results = [localStoreQuery findObjects];