不会输出带Ajax数据的角度智能表

时间:2014-12-22 17:20:03

标签: angularjs datagrid smart-table

我尝试在远程数据上使用smart Tabl e,但我没有得到任何输出。我一直在阅读文档中关于ajax数据应该使用stSafeSrc属性,但显然我做错了。

我的标记看起来如下

<div class="content">
    <div class="container">

{% verbatim %}
{{ rowCollection }}

<button type="button" ng-click="addRandomItem(row)" class="btn btn-sm btn-success">
            <i class="glyphicon glyphicon-plus"></i> Add Feed
</button>

<table st-table="displayedCollection" st-safe-src="rowCollection" class="table table-striped">
    <thead>
    <tr>
        <th>Feed Name</th>
        <th>parsed Items</th>
        <th>Feed Link</th>
        <th>Feed Type</th>
        <th>Import</th>
        <th>Categorize</th>
    </tr>
    </thead>
    <tbody>

    <tr ng-repeat="row in displayedCollection">
        <td>{{row.feed_type}}</td>
        <td>{{ row.id }}</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    </tbody>
</table>
{% endverbatim %}
</div>
</div>

控制器

october.controllers['dashboard/feeds'] = function ($scope, $filter , $request) {
    $.request('onFeeds', {success: function(data, scope){
        this.success(data).done(function() {
            $scope.rowCollection = [];
            $scope.rowCollection = angular.fromJson(data.result);
            $scope.displayedCollection = [].concat($scope.rowCollection);
            console.log($scope.rowCollection); // Array of Objects is present
        });
    }
});

}

1 个答案:

答案 0 :(得分:2)

从表面上看,你正在使用这个

https://github.com/responsiv/angular-plugin

您的控制器代码错误。您正在调用$.request()而不是$request(),这是$request服务实际代理http请求的内容。这就是它似乎有效的原因。但是你实际上并没有通过他们的服务提出http请求 - 这将是有角度的 - 你通过他们使用的第三方库在角度之外做出来。

您需要将控制器更改为以下内容:

october.controllers['dashboard/feeds'] = function ($scope, $filter , $request) {
    $request('onFeeds', {success: function(data, scope){
        this.success(data).done(function() {
            $scope.rowCollection = [];
            $scope.rowCollection = angular.fromJson(data.result);
            $scope.displayedCollection = [].concat($scope.rowCollection);
            console.log($scope.rowCollection); // Array of Objects is present
        });
    }
});

}

然后他们的$request服务会调用$rootScope.$apply() - 请参阅第110行

https://github.com/responsiv/angular-plugin/blob/master/assets/js/angular-bridge.js