Javascript 返回AngularJS中范围变量的长度
我想返回包含对象数组的范围变量的值长度。我的想法是减少html视图并将变量存储在我的控制器中。问题是,当我在控制台中调用该值时,我总是得到长度0 以下代码考虑了前面的视图:Javascript 返回AngularJS中范围变量的长度,javascript,html,angularjs,angularjs-scope,angularjs-service,Javascript,Html,Angularjs,Angularjs Scope,Angularjs Service,我想返回包含对象数组的范围变量的值长度。我的想法是减少html视图并将变量存储在我的控制器中。问题是,当我在控制台中调用该值时,我总是得到长度0 以下代码考虑了前面的视图: <div class="panel panel-default"> <div class="panel-body bg-form"> <div class="col-sm-4"> <strong>total
<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>
服务:
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.nameslist = CrudService.getAllNames();
从:
重要的是要认识到调用$resource对象方法
立即返回空引用(对象或数组,具体取决于
伊萨雷)。从服务器返回数据后,现有的
引用用实际数据填充
您需要绑定到视图中的对象$scope.namelist
,或者,等待承诺得到解决,然后在成功回调中分配属性
一种解决办法如下:
Javascript
$scope.searchResult = [{
title: 'total',
content: $scope.nameslist // holds a reference to the item returned by CrudService
}]
查看
<div class="col-sm-4">
<strong>{{ searchResult.title }}:</strong>
</div>
<div class="col-sm-3">
<span class="badge"> {{ searchResult.content.length }}</span>
</div>
{{searchResult.title}}:
{{searchResult.content.length}
当您不在模块上下文中时,您可能只是在控制台上尝试评估$scope.searchResult.length$作用域不是全局变量您的控制器似乎将CrudService视为是同步的。@Black0但我为什么要返回searchResult的长度。。我需要名称列表和筛选器名称的长度。@DavidL-hmm我不知道CrudService应该在哪里进行同步处理。。我的意思是我只需要范围变量的长度,但是你不可能知道你没有收到的变量的长度,我正在获取对象数组并将其返回到视图中,但这不是我的意图。我想要这个数组的长度。我将视图重写如下:{{{sResult.content.length}
并且控制器中的代码与示例代码类似。但是我怎样才能返回变量的长度呢?filteredNames
看看我上面的帖子中的ngRepeat。我已经更新了答案,以获得正确的变量名。至于filteredNames
,您的代码不会显示从何处获得该名称。如果您从与getAllNames
(即:$resource
)类似的位置获取它,则同样适用,您需要将模型中的引用保留到视图中,并将视图绑定到长度的完整路径:searchResult.content.length
$scope.searchResult = [{
title: 'total',
content: $scope.nameslist // holds a reference to the item returned by CrudService
}]
<div class="col-sm-4">
<strong>{{ searchResult.title }}:</strong>
</div>
<div class="col-sm-3">
<span class="badge"> {{ searchResult.content.length }}</span>
</div>