我继承了一个调用Web API服务的Angular应用程序。我试图保持现有结构尽可能接近原始结构。一个新的要求是通过几天,我修改了呼叫:
(function () {
'use strict';
angular
.module('myApp')
.factory('summaryService', ['$resource', summaryService]);
function summaryService($resource) {
return $resource('/api/summary/?days=:days', { days: '@days' }, {
getUserSummary: { method: 'POST' }
});
}
}());
调用getUserSummary服务的代码如下所示。我有一个下载列表,在加载时填充了几天。 updateByDays函数是更改日期DDL时调用的函数。这种情况正常发生,并且" daysToReport"参数正在更新为正确的值。
summaryService.getUserSummary({ Name: currentUser, days: 21 },
function (value) {
$scope.daysList = [{
name: '30 Days',
value: '30'
}, {
name: '60 Days',
value: '60'
}];
$scope.updateByDays = function (daysToReport) {
$scope.days = days;
...
};
},
function (httpResponse) {
...
}
);
就像现在一样,对Web API方法的调用已成功完成,但它始终有一个"天"参数值为21",这是预期的 - 它是参数列表中的硬编码值。不知何故,当updateByDays方法触发时,我需要更新" days"参数,以便正确调用Web API。如何实现这一目标?
谢谢你, 斯科特
答案 0 :(得分:0)
注意你想用什么来调用资源。看看这个文档:AngularJS $resource。
所以,你调用POST资源。您必须使用此参数调用资源函数:
function isValid(str) {
return (str.match(/hello/gi) || []).length === 1;
}
所以,你的电话将是:
summaryService.getUserSummary(
{getParams},
{postParams},
function successCallback(){},
function errorCallback() {}
);
对selectedDaysValue的注释。它是来自html中summaryService.getUserSummary(
{days: selectedDaysValue},
{},
function onSuccess() {}
);
的ngModel指令的模型。它必须是动态的。您始终发送21天,因为您使用静态对象select
调用资源。另请注意,名称将添加到查询中,如{ Name: currentUser, days: 21 }
。
此外,您希望在请求中使用查询。您不需要在资源参数中指定查询。
资源定义将是:
&Name=currentUserValue
资源调用:
return $resource('/api/summary');
实际请求将是:myResource.get({days: 21}, function onSuccess() {});
答案 1 :(得分:0)
我可能没有解释所有拼图的各个部分,但我尝试了解决方案,而对于我的情况,它不起作用。所以我最终欺骗并使用普通的JavaScript。
在方法中,我找到了Days DDL并将所选选项设置为匹配的文本值:
$scope.updateByDays = function (days) {
var desiredValue = days.name;
var el = document.getElementById("Days");
for (var i = 0; i < el.options.length; i++) {
if (el.options[i].text == desiredValue) {
el.selectedIndex = i;
break;
}
}
我的&#34;年度编码员&#34;奖。