2017-02-08 5 views
0

У моего приложения есть конечные точки API, для которых один из них предназначен для удаления. Уникальный data-id передается параметром /feeds/:feedID, который обращается к классу Controller, предоставляя значение параметра переменной «Операционный класс» feedID. Проблема: переменная feedID становится undefined внутри horseman экземпляра. Коды:Переменная внутри оценки узла-всадника не определена

Контроллер: Выполняется при доступе к конечной точке. Она захватывает значение параметра и сохраняет в переменном классе Операции для дальнейшего использования

* 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

Это проклятие ?? !!!! –

+0

Это так. По крайней мере, я выяснил этот вопрос, нужно было задать новый вопрос, более конкретный. Извиняюсь. – mfgabriel92

+0

Я чувствую, что ты брат! Иногда код просто хочет сделать ваши волосы серыми! –

ответ

1

Я понял. Я должен был последовать примеру в documentation и сделать это следующим образом:

.evaluate(function(selector) { 
    return 'li[data-id="' + selector + '"]' 
}, this.feedID) 
.then(function(data) { 
    console.log(data) 
}) 

Обратите внимание на параметр selector. Вот и все.