2015-08-29 2 views
0

У меня есть служба для получения текущего пользователя, и она возвращается правильно, когда я возвращаю жесткий код, но я не могу заставить его возвращать данные из вызова ajax.Свойство обслуживания Ember с данными обещания

export default Ember.Service.extend({ 
    currentUser: Ember.computed(function() { 
    Ember.$.ajax({ 
     url: "http://localhost:8000/v1/me/" 
    }).then(function(data){ 
     console.log(data); 
     return data; 
    }, 
    function(err){ 
     console.log(err); 
    }); 
    }), 
}); 

Я знаю, что данные возвращаются правильно, в соответствии с console.log в обещании.

Когда я использую эту службу в контроллере, она ничего не возвращает для currentUser, однако я знаю, что все правильно подключено, потому что, если я заменяю Ember.Object in для запроса ajax, он возвращает этот объект в контроллер ,

Должен ли я сделать что-то особенное с свойством, которое содержит запрос ajax, чтобы использовать возвращаемые данные в контроллере?

+0

'Ember. $. Ajax' возвращает обещание« ajax », а не обещание Обещания/A +, поэтому у вас будут проблемы. Вы также фактически не возвращаете вызов 'Ember. $. Ajax', поэтому возвращаемое значение метода не определено. Кроме того, вам может потребоваться переносить вызов в ObjectProxy. – locks

ответ

0

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

Here вы можете найти интересную дискуссию, которая помогла мне в той же ситуации. Если вы используете ember-simple-auth, вы даже найдете там готовый к использованию фрагмент кода.

+0

спасибо! что он работает с этим – awwester

+0

Но когда ember-simple-auth release 1.0, создатель 'ember-simple-auth' делает сообщение на' http://log.simplabs.com/post/131698328145/updating-to -ember -simple-auth-10', Он соблюдает обещание вместо локального хранилища для получения currentUser – TangMonk

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