我的应用程序有API端点,其中一个用于删除。唯一data-id
由参数/feeds/:feedID
传递,该参数访问Controller类,为Action类的变量feedID
提供参数值。问题:变量feedID
变为undefined
实例内的horseman
。代码:
控制器:访问端点时执行。它获取参数值并存储在Operation类的变量中以供进一步使用
* destroy(request, response) {
const googleAlertsOperation = new GoogleAlertsOperation()
googleAlertsOperation.feedID = request.param('feedID')
...
操作:使用新的feedID
值,它应继续执行
* deleteRSSFeed() {
var feedID = this.feedID //<-- Has the value passed from the Controller
return new Promise((resolve, reject) => {
horseman
.userAgent(this.userAgent)
.open('https://google.com/alerts')
.evaluate(function() {
try {
return '#manage-alerts-div li[data-id="' + feedID + '"]' //<-- Undefined
} catch(e) {
reject(e)
}
}).then(function(data) {
console.log(data)
})
.close()
}).catch((err) => {
this.addError(HTTPResponse.STATUS_INTERNAL_SERVER_ERROR, reject(err))
return false
})
}
我尝试了它而没有实例化新的Promise,但同样的问题。通过feedID
传递this.feedID
,而不是传递在顶部创建的变量undefined
。
答案 0 :(得分:1)
我明白了。我必须按照documentation上的示例进行操作,并按照以下方式进行操作:
selector
注意参数function getAsDate(day, time)
{
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var AMPM = time.match(/\s(.*)$/)[1];
if(AMPM == "pm" && hours<12) hours = hours+12;
if(AMPM == "am" && hours==12) hours = hours-12;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if(hours<10) sHours = "0" + sHours;
if(minutes<10) sMinutes = "0" + sMinutes;
time = sHours + ":" + sMinutes + ":00";
var d = new Date(day);
var n = d.toISOString().substring(0,10);
var newDate = new Date(n+"T"+time);
return newDate;
}
。就是这样。