我有一个使用AngularJS的rails 4应用程序。 我试图使用angular的ui-utils模块中的ui.scroll指令创建一个原型。 当我使用ng-repeat时,我的rails API工作得很好,但是当我尝试使用ng-scroll时,我的视口从来没有任何数据。 注意:我在应用程序的其他部分使用jquery,所以我没有使用任何jqlite的东西。
查看:(我跳过所有标题内容 - 但知道包含了css / jscript)
<html ng-app="Raffler">
<body>
<div ng-controller="ItemCtrl">
<div ng-scroll-viewport style="height:240px;">
<ul>
<li ng-scroll="entry in datasource">
{{entry.name}}
</li>
</ul>
</div>
</div> </body> </html>
控制器:(我跳过了所有应用程序包含,但知道注入了依赖项)
angular.module("eli.Controllers").controller("ItemCtrl",
["$scope", "Item", function ($scope, Item) {
$scope.items = Item.query();
$scope.datasource = {
get: function(index, count, success) {
// ensure we don't overrun the bounds of the data array
var start = Math.max(0, index);
var end = Math.min(index + count, $scope.items.length);
var results = [];
for (var i = start; i < end; i++) {
results.push($scope.items[i]);
}
success(results);
},
revision: function() {
return $scope.items;
}
};
}
]);
答案 0 :(得分:1)
所以我猜这里的问题是,在数据源上调用get函数时,查询没有返回。
您需要在get函数中验证数据是否已准备就绪。我不确定查询调用的另一端是什么,但是如果有某种方法可以从该调用获得一个promise,那么你可以在get完成时在get回执行中使用它。