Javascript Restangular不会返回来自restapi的对象
我想请求一些帮助。 我有一个可以使用domain/service/webapi/url调用的服务。当域/service/webapi/menu/getmenucategory打开时,它会返回下面表示应用程序菜单结构的JSON字符串: 我的问题是,若我使用restanglar调用这个url,那个么我得到了一个空的对象。然而,Fiddler说Restangular调用webapi服务并返回下面的json。我不明白为什么restanglar不返回我期望的javascript对象 我查阅了文件,但什么也没找到。我想我做错了一件很简单的事 以下是脚本: 控制器: 服务: Chrome控制台中的结果: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对象 我查阅了文件,但什么也
{"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;
});