Javascript Restangular不会返回来自restapi的对象

Javascript Restangular不会返回来自restapi的对象,javascript,json,rest,asp.net-web-api,restangular,Javascript,Json,Rest,Asp.net Web Api,Restangular,我想请求一些帮助。 我有一个可以使用domain/service/webapi/url调用的服务。当域/service/webapi/menu/getmenucategory打开时,它会返回下面表示应用程序菜单结构的JSON字符串: 我的问题是,若我使用restanglar调用这个url,那个么我得到了一个空的对象。然而,Fiddler说Restangular调用webapi服务并返回下面的json。我不明白为什么restanglar不返回我期望的javascript对象 我查阅了文件,但什么也

我想请求一些帮助。 我有一个可以使用domain/service/webapi/url调用的服务。当域/service/webapi/menu/getmenucategory打开时,它会返回下面表示应用程序菜单结构的JSON字符串:

我的问题是,若我使用restanglar调用这个url,那个么我得到了一个空的对象。然而,Fiddler说Restangular调用webapi服务并返回下面的json。我不明白为什么restanglar不返回我期望的javascript对象

我查阅了文件,但什么也没找到。我想我做错了一件很简单的事

以下是脚本:

控制器:

服务:

Chrome控制台中的结果:

 {"restangularCollection":true,"$object":[]}
JSON字符串:


我相信这是因为Restanglar正在回报一个承诺。所以你必须做一些类似的事情:

$scope.menuCategories = [];
navigationMenuService.GetMenuCategories().then(function(result){
     $scope.menuCategories = result;
});

您的问题是,如果直接赋值,那么您只是得到promise对象,而且由于它是异步的,所以该数组中的直接结果起初是空的。直到承诺完成,然后数组将在其中产生结果

好吧,我想做点什么来反对——在我看来——重新定义语言的概念。我将我的重启语言调用移到了控制器中,现在它工作得很好,但是,我不喜欢将服务器调用和控制器函数放在同一个方法中。
 {"restangularCollection":true,"$object":[]}
[{"$id":"1",
"Id":1,
"Name":"File",
"SortNo":0,
"IsEnabled":1,
"MenuItems":[{"$id":"2",
        "Id":1,
        "Name":"File menu item 1",
        "IsEnabled":1},
        {"$id":"3",
        "Id":2,
        "Name":"File menu item 2",
        "IsEnabled":1}]},
{"$id":"4",
"Id":2,
"Name":"Administration",
"SortNo":1,
"IsEnabled":1,
"MenuItems":[{"$id":"5",
        "Id":4,
        "Name":"Administration menu item 1",
        "IsEnabled":1},
        {"$id":"6",
        "Id":5,
        "Name":"Administration menu item 2",
        "IsEnabled":1}]},
{"$id":"7",
"Id":3,
"Name":"Modules",
"SortNo":2,
"IsEnabled":1,
"MenuItems":[{"$id":"8",
        "Id":6,
        "Name":"Modules menu item 1",
        "IsEnabled":1},
        {"$id":"9",
        "Id":7,
        "Name":"Modules menu item 2",
        "IsEnabled":1}]}]
$scope.menuCategories = [];
navigationMenuService.GetMenuCategories().then(function(result){
     $scope.menuCategories = result;
});