Angularjs 必须单击md按钮两次才能获得WebApi调用结果
我正在尝试用WebAPI调用和AngularJS构建一个简单的MVC WebApp。前端有一个md按钮,在控制器中定义了ng click方法。当我填充字段并点击按钮时,它应该转到angular Controller=>factory=>CallWebAPI并返回结果。但是在第一次单击之后,不会返回任何内容,而如果我第二次单击同一个按钮,它会获取数据。我不明白为什么会这样 Index.cshtmlAngularjs 必须单击md按钮两次才能获得WebApi调用结果,angularjs,asp.net-web-api2,Angularjs,Asp.net Web Api2,我正在尝试用WebAPI调用和AngularJS构建一个简单的MVC WebApp。前端有一个md按钮,在控制器中定义了ng click方法。当我填充字段并点击按钮时,它应该转到angular Controller=>factory=>CallWebAPI并返回结果。但是在第一次单击之后,不会返回任何内容,而如果我第二次单击同一个按钮,它会获取数据。我不明白为什么会这样 Index.cshtml <md-button ng-click="GetResponse()" class="md-r
<md-button ng-click="GetResponse()" class="md-raised md-primary">
Get Response
</md-button>
Service.js
$scope.GetResponse = function () {
debugger;
//Hardcodes the values, but still does not work
$scope.edm.shortDescription = 'SDesc';
$scope.edm.detailDescription = 'DDesc';
$scope.edm.changeType = $("#ddlChangeType")[0].innerText;
$scope.edm.category = 'CategoryName';
$scope.edm.application = 'AppName';
PrepareRequestService.GetFullRequest($scope.edm).then(function (d) {
$scope.fullRequest = d.data;
}, function (e) {
alert('Failed');
});
console.log(JSON.stringify($scope.fullRequest));
//This is the line I am getting null first and then value after second click.
}
myAppModule.factory('PrepareRequestService', function ($http) {
var fac = {};
fac.GetFullRequest = function (edm) {
debugger;
//Here the Api Url is constructing properly
console.log('http://localhost:17669/api/PrepareRequest/' + edm.shortDescription + '/'
+ edm.detailDescription + '/'
+ edm.changeType + '/'
+ edm.category + '/'
+ edm.application + '/');
//This is the actual call to API
return $http.get('http://localhost:17669/api/PrepareRequest/' + edm.shortDescription + '/'
+ edm.detailDescription + '/'
+ edm.changeType + '/'
+ edm.category + '/'
+ edm.application + '/');
};
return fac;
});
Web API:
// GET: api/PrepareRequest/sDescription/dDescription/changeType/category/application
public RootObject Get(string sDescription, string dDescription, string changeType, string category, string application)
{
RequestBuilder p = new RequestBuilder();
RootObject ro = new RootObject();
ro = p.PopulatePPMParameter(application, sDescription, "Today", "myName", changeType, category);
return ro;
}
//在浏览器中尝试时,此API返回第二次单击GetResponse后得到的确切JSON格式数据。但我需要在每次单击中都获得这些信息。也许您可以分享一些关于您所做工作的代码?谢谢您的关注。添加代码…涉及4个文件=>1。Index.cshtml,2。Controller.js,3。Services.js,4。WebApi c#文件。我已经把Angular模块、控制器和服务放在不同的文件中。更新:当我在chrome开发者工具中检查网络选项卡时,它在第一次请求后显示“加载响应数据失败”。但是它可以在上面的请求中获得数据。也许你可以分享一些关于你所做的事情的代码?谢谢你的关注。添加代码…涉及4个文件=>1。Index.cshtml,2。Controller.js,3。Services.js,4。WebApi c#文件。我已经把Angular模块、控制器和服务放在不同的文件中。更新:当我在chrome开发者工具中检查网络选项卡时,它在第一次请求后显示“加载响应数据失败”。但是它能够在上面的请求中获取数据。