Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回AngularJS中范围变量的长度_Javascript_Html_Angularjs_Angularjs Scope_Angularjs Service - Fatal编程技术网

Javascript 返回AngularJS中范围变量的长度

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

我想返回包含对象数组的范围变量的值长度。我的想法是减少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>
服务:

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>