Kendo网格不仅仅在初始加载时显示数据,但在使用断点时可以正常工作

时间:2016-12-15 14:04:15

标签: angularjs kendo-grid

我遇到的问题正是我在标题中所说的。当我在调试器中单步执行我的应用程序时,它正确地设置了需要设置的所有内容,但是当我自己完成它时,它从不在初始尝试时加载数据,但如果我返回并单击相同的东西再次,或任何其他必须将数据发送到此网格的东西,它将永远工作。即使我进入一个清空网格中所有内容的页面,然后又返回到再次显示数据的页面。

对我而言,这听起来像是一个时间问题,但在数据调用之前使用$timeout()似乎不起作用。我设置了一个广播,只有在所有数据被拉入并设置后才能调用,然后才能转到kendo网格的代码并开始在页面上绘制它。

就像我说在页面的初始加载时逐行执行此代码一样,它完全按照预期的方式工作并提取所需的所有数据,但是让它在没有我这样做的情况下运行,它永远不会。

希望有足够的代码可以解决。

以下是我网格的代码:

$scope.$on('loadRxHistoryGrids', function () {
    console.log('user id of ' + pServ.patientId.get());

    $scope.activeHistoryGrid = {
        pageable: {
            pageSizes: [5, 10, 15, 20],
        },
        dataSource: new kendo.data.DataSource({
            type: 'aspnetmvc-ajax',
            contentType: "application/json; charset=utf-8",
            transport: {
                read: {
                    url: function () {
                        var x = pServ.patientId.get();
                        return "api/rx/ActiveRxHistory/" + pServ.patientId.get();
                    },
                    dataType: "json",
                    type: "POST"
                },
            },
            pageSize: 5,
            schema: {
                model: {
                    fields: {
                        rxId: { type: "number" },
                        refillsLeft: { type: "number" },
                        shortName: { type: "string" },
                        unitsRemaining: { type: "number" },
                        dispenseRefillQuantity: { type: "number" },
                        description: { type: "string" },
                        shipDate: { type: "date" }
                    },

                },
                data: function (data) {
                    if (data != undefined) {
                        $scope.ActiveHistoryCount = data.length;
                        return data;
                    } else { return []; }
                },
                total: function (data) {
                    return data.length;
                },
            },
        }),
        serverPaging: true,
        serverSorting: true,
        serverFiltering: true,
        columns: [
            { hidden: true, field: "rxId"},
            { field: "shortName", title: "DRUG NAME"},
            { field: "refillsLeft", title: "REFILLS LEFT", width: "16%", template: '#= (refillsLeft == null) ? " " : kendo.toString( refillsLeft, "n0")#', attributes: { style: "text-align:left" } },// template: '<div style="text-align:left">#= ((unitsRemaining == null) || (dispenseRefillQuantity == null)) ? " " : kendo.toString(unitsRemaining / dispenseRefillQuantity, "n5")#</div>' },
            { field: "description", title: "STATUS", width: "14%", template: '<div style="text-align:left">#= (description == null) ? " " : description#</div>' },
            { field: "shipDate", title: "SHIPPED DATE", width: "15%", template: '#= (shipDate == null) ? " " : kendo.toString(kendo.parseDate(shipDate), "MM/dd/yyyy") #' }
        ],
        groupable: false,
        scrollable: true,
        selectable: true,
        resizeable: true,
        sortable: true,
    }

以下是发送广播的其他代码:

$scope.$on('loadPatientProfileData', function () {

//A lot of data gets and sets are being done here for other things on the 
//page, all data is being set in the grid datasource itself

    setTimeout(function () {
        $rootScope.$broadcast('patientProfile-DataPullFinish');
        $rootScope.$broadcast('loadRxHistoryGrids');
    }, 100);
});

0 个答案:

没有答案