我有以下问题与ngShow.我从$ http.get接收响应作为jSON,并使用ngRepeat构造几个DOM元素.这一切都正常.从我的控制器中只需申请:
$http.get(requestUrl).success(function (data) {
$scope.results = data.results;
});
Run Code Online (Sandbox Code Playgroud)
data.results是这样的对象:
{
"someProp": ["item1", "item2", "item3"],
"someProp1": ["item1", "item2", "item3"]
}
Run Code Online (Sandbox Code Playgroud)
从我的模板我尝试使用这样的ngShow:
<table ng-show="Object.keys(results).length > 0">
Run Code Online (Sandbox Code Playgroud)
和这样:
<table ng-show="Object.keys($scope.results).length > 0">
Run Code Online (Sandbox Code Playgroud)
没有运气.
<table ng-show="true">
Run Code Online (Sandbox Code Playgroud)
和
<table ng-show="false">
Run Code Online (Sandbox Code Playgroud)
好好工作.
所以似乎问题在于表达式.我会非常感谢任何帮助.
它不会评估Object.keys表达式内部的函数,因为它实际上并不位于作用域中.解决这个问题的一种方法是将Object范围分配给范围.
$scope.Object = Object;
Run Code Online (Sandbox Code Playgroud)
并在你的视野内
<div ng-show="Object.keys(results).length > 0">
{{Object.keys(results).length}}
</div>
Run Code Online (Sandbox Code Playgroud)