Restangular没有调用服务器

Restangular is not calling the server

本文关键字:服务器 调用 Restangular      更新时间:2023-09-26

我想寻求一些帮助,因为我不知道这种情况下的问题是什么。

我有一个简单的MVC5应用程序,我想在其中使用angular和restangular。当我加载页面时,将执行角度控制器,但不会调用服务器。这只是一种测试方法,没有别的。rest服务(Webapi2)返回一个简单的json对象。

如果我使用浏览器或Fiddler2调用Web服务,那么我会得到预期的结果。根据Fiddler的说法,结果是json。

当我重新加载页面时,我什么也没得到,我想只有promise对象。根据Fiddler的说法,当时没有服务器调用。如果我转储testResult对象(请参阅下面的TestService.js文件),它不包含任何内容,并且我看到存在来自Server的属性,并且值为false。我认为这表明是否发生了服务器通信。

我查阅了重述的文档,但没有发现任何有助于我克服这个问题的内容。这并不意味着文档是错误的。:)我不知道问题出在哪里。

预期的json:

{"Id":1,"Name":"Egyeske"}

单个html文件(_layout.cs.html)

<!DOCTYPE html>
<html lang="en" ng-app="dilibApp">
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
    <body>
        <div ng-controller="TestController">
            Test value: {{testValue}}
        </div>
        <div>
            @RenderBody()
        </div>
        <div>
            <script type="text/javascript" src="~/Scripts/angular.js"></script>
            <script type="text/javascript" src="~/Scripts/angular-route.js"></script>
            <script type="text/javascript" src="~/Scripts/angular-resource.js"></script>
            <script type="text/javascript" src="~/Scripts/restangular.js"></script>
            <script type="text/javascript" src="~/Scripts/lodash.js"></script>
            @* dilibApp module *@
            <script type="text/javascript" src="~/Scripts/AngularModules/dilibApp/dilibApp.js"></script>
            <script type="text/javascript" src="~/Scripts/AngularModules/dilibApp/Controllers/TestController.js"></script>
            <script type="text/javascript" src="~/Scripts/AngularModules/dilibApp/Services/TestService.js"></script>
        </div>
    </body>
</html>

dilibApp.js文件:

'use strict';
var dilibApp = angular.module('dilibApp', ['restangular', 'ngRoute', 'ngResource']).
config(function (RestangularProvider)
{
    RestangularProvider.setBaseUrl('http://dev.dilib.local/service/webapi/');
});

TestController.js文件:

'use strict';
dilibApp.controller('TestController', function ($scope, testService)
{
    $scope.testValue = testService.get();
});

TestService.js文件:

'use strict';
dilibApp.factory('testService', function(Restangular) {
    var testResult = Restangular.all('http://dev.dilib.local/service/webapi/test');
    //console.log(Restangular);
    //console.log(testResult);
    return {
        get: function() {
            //console.log(testResult.one());
            return testResult.one();
        }
    }
});

文档

Restangular.all('link').getList();Restangular.one('link').get();

因此,您应该将方法.get()放在方法.one()之后以获得单个结果,或者将.getList()放在结果列表

之后