2015-07-21 2 views
0

Я немного потерял и изо всех сил стараюсь найти правильную информацию, чтобы вести меня. У меня есть приложение для продажи кофе, и когда пользователь входит в систему, я бы хотел отфильтровать данные, которые они видят в МАГАЗИНЕ, который они разделяют.Сохранение хранилища Ember от текущего пользователя

(я собираюсь заработать STORE, когда речь идет об объекте, кофе магазин, чтобы помочь с заблуждением по отношению к магазину уголек данных)

export default DS.Model.extend({ 
    user: DS.belongsTo('user'), 
    active: DS.attr('boolean'), 
    name: DS.attr('string'), 
    extraShotPrice: DS.attr('number'), 
    syrupPrice: DS.attr('number'), 
}); 

Вот мой STORE модель, и это связано с пользователь в простом отношении относится к отношениям.

На моем сервере у меня есть конечная точка, которая правильно возвращает текущий пользовательский объект, но я немного теряюсь в том, как/где я могу правильно загрузить этого пользователя в свой магазин, а затем использовать его в контроллере.

Вторая вещь, которую мне нужно будет сделать, это отфильтровать мою модель на пути к этому пользователю.

export default Ember.Route.extend({ 
    model: function(){ 
    // not sure where user.id would come from? 
    return this.store.find('store', {'user': user.id}) 
    } 
}); 

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

Кстати, STORE и пользователь имеют отношения 1 к 1. Спасибо за любые предложения!

ответ

2

услуга может быть хорошим выбором для долгоживущего объекта в Ember (например, как current_user во многих приложениях Это на самом деле удивительно просто, и я не знаю, почему это не обсуждается больше:.

услуги /session_service.js

export default Ember.Service.extend({ 
    currentUser: Ember.computed(function() { 
    // however you fetch the user 
    // I will just use some dummy data 
    return Ember.Object.create({ 
     name: "Kori", 
     workTitle: "Mr. Big Boss", 
     skills: ["Ember", "Mentoring", "Ruby", "Refactoring"] 
    }); 
    }) 
}); 

контроллеры/some_controller.js

export default Ember.Controller.extend({ 
    session: Ember.inject.service(), 
    currentUser: Ember.computed.alias("session.currentUser") 
}); 

использования в качестве шаблона:

<h2>User details:</h2> 
<p>Title: ({{currentUser.workTitle}})</p> 
<p>Name: {{currentUser.name}}</p> 
<p>Mad Skills:</p> 
<ul> 
    {{#each currentUser.skills as |skill|}} 
    <li> 
     {{skill}} 
    </li> 
    {{/each}} 
</ul> 

В вашем конкретном случае, вы могли бы в конечном итоге с маршрутом, глядя, как это:

export default Ember.Route.extend({ 
    session: Ember.inject.service(), 
    model: function(){ 
    return this.store.find('store', {'user': this.get('session.currentUser.id')}) 
    } 
}); 

тогда ваши OCD пинки в:

export default Ember.Route.extend({ 
    session: Ember.inject.service(), 
    currentUserId: Ember.computed.alias('session.currentUser.id'), 
    model: function(){ 
    return this.store.find('store', { 'user': this.get('currentUserId') }) 
    } 
}); 

PS store как название модели == no end fun!

Образец codepen

+0

также, если хранилище и пользователь 1: 1, вы можете просто 'this.get ('session.currentUser.store') ', Я верю. –

+0

спасибо за подробный ответ! – awwester

0

Похоже, вы действительно хотите иметь какую-то сессию в своем приложении Ember, который координирует вашу заднюю часть. Вероятно, вы не хотите связываться с сервером для этого при каждом переходе. Вы изучали Simple Auth?

+0

эй спасибо, да я использую простую аутентификацию и моя аутентификация работает нормально. Я борюсь за то, как получить пользовательские данные в моем приложении (например, в настоящее время в журнале пользователя) – awwester

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