我有一個角度應用程序,我試圖從服務器獲取用戶列表。我遇到了一個問題。我有頁面調用CurrentUsers。如果CurrentUsers方法返回一個Json對象,則無論我在應用程序控制器和html頁面中做什麼,整個對象都會顯示在頁面上。如果該方法返回一個視圖,它不會顯示任何內容。但是,我可以在cotroller中硬編碼json對象,並且它可以正常工作。 因此,我創建了另一個返回json對象的方法。我打了一個電話給那個方法,但是它沒有到達服務器。您的幫助將非常感謝。AngularJS獲取方法不起作用
的CurrentUsers方法返回JSON對象,在屏幕上的整個JSON對象顯示,而不管
[HttpGet]
public JsonResult CurrentUsers()
{
List<Users> currentUser = new List<Users>()
{
new Users{ UserName = "JDoe", Professor="SSmith", Course = "English1"},
new Users{ UserName = "ADan", Professor="SDhor", Course = "Science"},
new Users{ UserName = "ADes", Professor="SCarry", Course = "Religion101"},
new Users{ UserName = "DJay", Professor="SCrowe", Course = "Teaching101"},
new Users{ UserName = "MAnne", Professor="TRow", Course = "PreCalc"},
};
return Json(new { Ok = true, data= currentUser });
// return View();
}
如果上述方法返回一個視圖,我可以修改如下所示的控制器作爲 ,和我會看到相應的信息
Registration.controller('CurrentUsersController', function ($scope, $http) {
$scope.currentUsers = [{ "Professor": "SSmith", "UserName": "JDoe", "Course": "English1" }, { "Professor": "SDhor", "UserName": "ADan", "Course": "Science" }, { "Professor": "SCarry", "UserName": "ADes", "Course": "Religion101" }]
});
我修改了控制器使用Servi大街並創建了下面的方法來讀取當前用戶,以便該視圖可以簡單地返回一個View()。但是,我無法獲得'GET'的工作。
[HttpGet]
public JsonResult GetUsers()
{
List<Users> currentUser = new List<Users>()
{
new Users{ UserName = "JDoe", Professor="SSmith", Course = "English1"},
new Users{ UserName = "ADan", Professor="SDhor", Course = "Science"},
new Users{ UserName = "ADes", Professor="SCarry", Course = "Religion101"},
new Users{ UserName = "DJay", Professor="SCrowe", Course = "Teaching101"},
new Users{ UserName = "MAnne", Professor="TRow", Course = "PreCalc"},
};
return Json(new { Ok = true, data = currentUser , message =
"Success"}, JsonRequestBehavior.AllowGet);
}
的修改CurrentUsers方法返回一個視圖
public ActionResult CurrentUsers()
{
return View();
}
我修改控制器
Registration.controller('CurrentUsersController', function ($scope, GetUSerService) {
$scope.message = 'this is the Current User controller';
$scope.currentUsers = [];
var result = GetUSerService.getData()
.then(function (result) {
console.log('the result');
console.log(result.data);
});
});
我的服務
Registration.service('GetUSerService', function ($http,$q) {
this.getData = function() {
var deferredObject = $q.defer();
$http.get('/Home/GetUsers').
success(function (data) {
console.log('service call data');
console.log(data);
deferredObject.resolve({ success: true, data : data.data });
}).
error(function() {
deferredObject.resolve({ success: false, data : '' });
});
return deferredObject.promise;
};
});
Updated 10/6 @ 5:50 @FernandoPinheiro答案適合我。唯一的是GetUsers操作被調用兩次。
更新10/7
我想通了,爲什麼後正在做兩次。在我的模板上,我有ng-app =「註冊」,並且我有ng-controller =「CurrentUsersController」。因爲我在路由提供程序中指定了控制器名稱,所以我不需要將它添加到局部視圖中。只要我從視圖中刪除它,它就按預期工作。
:)發生在每個程序員,對嗎? :P – Swag
當然!有時我們只需要另一雙眼睛:) :) –
我正在玩$ http調用,這是你看到帖子而不是獲取的原因。就行動而言,我沒有爲它設定路線。 –