我在sharepoint应用部分中显示当前用户有权访问的子网站。
我设法隐藏或显示一条消息说“#34;没有可用的网站"如果我的app.js在scope.array中返回0。
但是,在列表加载完毕之前以及列表加载消息消息之前,消息正在显示。我该如何解决这个问题?
我在带有文本框的表格中有一个ng-repeat用于过滤:
<input type="text" ng-model="text" placeholder="Filter..." />
<div ng-controller="MainCtrl">
<table>
<thead>
<tr>
<th>
Site
</th>
<th>
Created
</th>
</tr>
</thead>
<tbody ng-repeat="site in sites | filter:text">
<tr>
<td>
{{site.title}}
</td>
<td>
{{site.created | date:dateFormat}}
</td>
</tr>
</tbody>
</table>
<div ng-show="!(sites| filter:text).length">There is no sites avaiable for you.</div>
</div>
我知道ng-show在执行ng-repeat的表格之外,但是我尝试在tbody中插入ng-show div但是如果没有站点存在则表格永远不会执行。< / p>
另外,如果数组为空,如何禁用过滤器文本框?尝试使用与ng-show相同的属性,但是在ng-disabled中,但这不起作用。
答案 0 :(得分:3)
等待成功回调以确定在显示消息之前没有结果。
//view
<div ng-controller="MainCtrl">
<div ng-show="loading">Loading..</div>
<input ng-hide="noSites" ng-model="text" placeholder="Filter...">
//table ..
<div ng-show="noSites">
There are no sites available for you.
</div>
</div>
//controller
app.controller('MainCtrl', function($scope) {
//initialize
$scope.loading = true
$scope.noSites = false
//sharepoint code to get sites
.success(function(data) {
if (data.length != 0) {
$scope.sites = data
} else {
$scope.noSites = true
}
$scope.loading = false
})
})
答案 1 :(得分:2)
<input type="text" ng-model="text" placeholder="Filter..." />
将此内容放在<div ng-controller="MainCtrl">..
div
并修改此
<div ng-show="!sites.length" style="display:none">There is no sites avaiable for you.</div> // added `display:none