2016-03-01 3 views
0

В настоящее время я пытаюсь использовать Promise для решения выборки моделей из базы данных. В дальнейшем было:Контекст внутри Promise.resolve()/Backbone

Promise.resolve(app.Departments.fetch()).then(function(response){ 
    console.log(response); 
    this.$el.html(this.template({depts: app.Departments.toJSON()})); 
    this.$form = this.$('#form-employee'); 
    this.$form.validator(); 
    return this; 
}) 

Рассмотрим все внутри визуализации метод и метод находится внутри Backbone.View.extend ({}) объекта. Проблема заключается в том, что внутри функции Promise.resolve() контекст этого отличается от контекста внутри объекта View, в котором он выдает ошибку, не зная, к чему это относится. Есть ли все равно, чтобы перейти к Promise.resolve правильный контекст это?

+0

Уведомления вы звоните 'затем' с обратным вызовом, а не' resolve'. – Bergi

+0

Можете ли вы просветить эту тему? Я знаю, что тогда они могут использоваться и при разрешении и отказе от этапов обещаний. –

+0

Метод 'then' работает над любыми обещаниями независимо от их состояния. В моем комментарии попытался подчеркнуть, что ваша проблема связана с тем, как «то» обрабатывает обратный вызов и не имеет никакого отношения к тому, откуда приходит обещание - будь то «Promise.resolve» или что-то еще – Bergi

ответ

1

Используйте локальную ссылку на это:

var self=this; 
Promise.resolve(app.Departments.fetch()).then(function(response){ 
    console.log(response); 
    self.$el.html(self.template({depts: app.Departments.toJSON()})); 
    self.$form = this.$('#form-employee'); 
    self.$form.validator(); 
    return self; 
}) 
+0

Он работает, спасибо! –

Смежные вопросы