【发布时间】:2015-11-27 05:17:22
【问题描述】:
我想返回包含对象数组的范围变量的值长度。好吧,我的想法是减少 html 视图并将变量存储在我的控制器中。问题是当我在控制台中调用值时,我总是得到长度 0。
以下代码考虑了之前的视图:
<div class="panel panel-default">
<div class="panel-body bg-form">
<div class="col-sm-4">
<strong>total:</strong>
</div>
<div class="col-sm-3">
<span class="badge"> {{ nameslist.length }}</span>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-body bg-form">
<div class="col-sm-4">
<strong>filtered:</strong>
</div>
<div class="col-sm-3">
<span class="badge"> {{ filteredNames.length }}</span>
</div>
</div>
</div>
...
<tr ng-repeat="names in filteredNames = (nameslist | orderBy:sortType:sortReverse)" class="show-cursor">
<td>{{ names.fname }}</td>
<td>{{ names.lname }}</td>
</tr>
这些应该是新代码:
<div class="panel panel-default" ng-repeat="sResult in searchResult">
<div class="panel-body bg-form">
<div class="col-sm-4">
<strong>{{ sResult.title }}:</strong>
</div>
<div class="col-sm-3">
<span class="badge"> {{ sResult.content }}</span>
</div>
</div>
</div>
Ctrl:
$scope.nameslist = CrudService.getAllNames();
$scope.searchResult = [
{
title: 'total',
content: $scope.nameslist.length
},
{
title: 'filtered',
content: $scope.filteredNames.length
}
];
服务:
myApp.factory('CrudService', ['ResService',
function (ResService) {
return {
getAllNames: function () {
return ResService.names.query();
},
...
}]);
myApp.factory('ResService', ['$resource', 'baseUrl',
function ($resource, baseUrl) {
return {
names: $resource(baseUrl + '/api/names/:Id/:fname', {
Id: '@Id',
fname: '@fname'
}, {
'update': {
method: 'PUT'
}
}),
...
}]);
如何只返回数组的个数和过滤后的数组个数?
【问题讨论】:
-
当您不在模块上下文中时,也许您只是想在控制台上评估 $scope.searchResult.length? $scope 不是全局变量
-
您的控制器似乎将您的 CrudService 视为同步的。
-
@Black0ut 为什么我应该返回 searchResult 的长度。我需要名称列表和过滤名称的长度。
-
@DavidL hmm 我不知道 CrudService 应该在哪里进行同步处理。我的意思是我只需要范围变量的长度。
-
但是你无法知道你还没有收到的变量的长度
标签: javascript html angularjs angularjs-scope angularjs-service