我正在使用ons-lazy-repeat并尝试从mySql查询。如果我预先定义了数组,它就可以完美地运行。但我需要它与数据库动态工作,因此我包括httpget但它不起作用。所以我尝试添加警报,并且在每个其他函数(configureItemScope,calculateItemHeight,countItems)被调用完成后,实现了httpget函数的最后调用。
我知道我可以在configureItemScope中使用httpget函数,但我将无法再获取CountItems,因为看起来countitem首先在configureItemScope之前运行。
我对使用ons-lazy-repeat非常困惑。我是onsen-ui的初学者。感谢任何人帮忙吗?
ons.bootstrap()
.controller('Ctrl', ['$scope', '$http', '$q', function($scope, $http, $q) {
$scope.channels = [{
name : '',
description : '',
category : ''
}];
$http.get(serviceURL + 'TestApp/services/getlist.php', {
timeout: $scope.canceler.promise
}).success(function(data) {
for (i = 0; i < data.length; i = i + 1) {
$scope.channels.push(data[index].name, data[index].description, data[index].category);
}
}).error(function() {
});
alert('scope.channels');
$scope.query = '';
$scope.$watch('query', function(q) {
if ($scope.timeout) {
$timeout.cancel($scope.timeout);
}
$scope.filteredChannels = $scope.channels.filter(function(channel) {
return channel.name.toLowerCase()
.indexOf(q.toLowerCase()) > -1;
});
});
$scope.MyDelegate = {
configureItemScope: function(index, itemScope) {
alert('MyDelegate');
itemScope.name = $scope.filteredChannels[index].name;
itemScope.description = $scope.filteredChannels[index].description;
itemScope.category = $scope.filteredChannels[index].category;
},
calculateItemHeight: function(index) {
alert('calculateItemHeight');
return 90;
},
countItems: function() {
alert('countItems');
return $scope.filteredChannels.length;
}
};
}]);