使用 AngularJS 服务代替 KendoUI 调度程序中的 url

Posted

技术标签:

【中文标题】使用 AngularJS 服务代替 KendoUI 调度程序中的 url【英文标题】:Use an AngularJS Service in place of the url in KendoUI Scheduler 【发布时间】:2019-04-24 11:49:51 【问题描述】:

我一整天都在试图弄清楚在使用 AngularJS 的 kendoui 调度程序适配器时事件没有成功加载,我发现原因是服务调用获取数据;用它正确工作的 URL 替换它,但对我来说似乎很难看。有什么方法可以让我使用它并让它正常工作吗?

这是我使用的代码

angular.module('xxx.controllers').controller('CalendarioController', [
'$scope', '$rootScope', '$mdDialog', '$mdToast', 'Calendarioservice',
function ($scope, $rootScope, $mdDialog, $mdToast, CalendarioService) 
    var self = this;
    self.scope = $scope;
    self.service = CalendarioService;
    self.scope.loading = false;

    self.scope.nuovoEventoCalendario = function (ev) 

        $mdDialog.show(
            controller: 'NuovoEventoCalendarioController',
            templateUrl: '/amministratori/calendario/form',
            parent: angular.element(document.body),
            targetEvent: ev,
            locals: 
                // nada
            
        ).then(function (response) 
            if (response) 
                //caricaListaEtichette();
                // Qui apro il popup con la preview del barcode
                //  self.scope.anteprimaDiStampa(response, ev);
            
        , function () 

        );
    ;

    self.scope.schedulerOptions = 
        date: new Date(),
        views: [
            "day",
            //"workWeek",
            "week",
             type: "month", selected: true ,

        ],
        //editable: 
        //    template: $("#customEditorTemplate").html(),
        dataSource: 
            batch: true,
            transport: 
                read: 
                    type: "GET",
                    datatype: "json",
                    url: "https://localhost:44301/api/calendario/elenco", //This works
                    contentType: "application/json; charset=utf-8"
                ,
                //read: 
                //    url: CalendarioService.getElencoEventiCalendario(), //This not
                //    dataType: "json"
                //,

奇怪的是服务的方法定义如下

angular.module('xxx.services').factory('CalendarioService', [
'$http', function ($http) 
    var baseUrl = "api/calendario";

    return 
        getElencoEventiCalendario: function () 
    return $http.get(baseUrl + "/elenco");
        ,

我怀疑该方法是一个承诺,而不是 URL 本身......我该如何解决这个问题?

提前致谢

【问题讨论】:

$http 服务返回一个承诺。使用该承诺的.then 方法从该承诺中提取数据。见AngularJS $q Service API Reference - The Promise API。 【参考方案1】:

就像已经说过的那样,您需要使用 .then 作为 $http 服务返回一个承诺。你可以试试这样的:

dataSource: 
            transport: 
              read: function (e) 
                CalendarioService.getElencoEventiCalendario()
                  .then(function success(response) 
                  e.success(response.data)
                , function error(response) 
                  alert('something went wrong')
                  console.log(response);
                )
              
            
          

希望这会有所帮助。

【讨论】:

以上是关于使用 AngularJS 服务代替 KendoUI 调度程序中的 url的主要内容,如果未能解决你的问题,请参考以下文章

KendoUI AngularJS Bootstrap

kendoui + angularjs + 自动完成显示文本但将 id 设置为值

如何让 AngularJS 和 KendoUI 协调工作?

如何让 AngularJS 和 KendoUI 协调工作?

KendoUI 下拉过滤器不适用于 AngularJS

KendoUI Grid + AngularJS:添加列模板