无法将结果http-get转换为ons-lazy-repeat控制器的数组

时间:2015-11-06 02:03:19

标签: javascript angularjs onsen-ui

我正在使用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;
        }
    };
}]);

0 个答案:

没有答案