假设我有以下代码:
<div ng-if="Array.isArray(list)" ng-repeat="item in list">{{item}}</div>
<div ng-if="!Array.isArray(list)"> Not a list </div>
表达式总是评估为不是列表。为什么呢?
答案 0 :(得分:5)
查看角度文档:
上下文
Angular不使用JavaScript的eval()来计算表达式。相反,Angular的$ parse服务处理这些表达式。
与JavaScript不同,其中names默认为全局窗口属性,Angular表达式必须显式使用$ window来引用全局窗口对象。例如,如果要在表达式中调用alert(),则必须使用$ window.alert()。这种限制是故意的。它可以防止意外访问全局状态 - 这是微妙错误的常见来源。
答案 1 :(得分:1)
或多或少地试试这个:
scope.list = [1,2,3,4,5,6];
//scope.list = 'test';
scope.isArr = function(arr){
return Array.isArray(arr);
}
然后:
<div ng-repeat="item in list" ng-show="isArr(list)">{{item}}</div>
<div ng-show="!isArr(list)">foobarbazz</div>
取消注释scope.list =&#39; test&#39;看到结果。这非常草率,但它得到了重点。