Это новичок: я создаю новую запись главы в Хранилище (Ember-data). Я хочу добавить идентификатор главы в свойство User.chapters записи User Model.Как получить доступ к модели с другого контроллера в Ember
App.Book = DS.Model.extend({
name: DS.attr('string'),
icon: DS.attr('string'),
description: DS.attr('string'),
createdDate: DS.attr('date'),
chapters: DS.hasMany('chapter', { inverse: 'book', async: true}),
bookAssignments: DS.hasMany('bookAssignment', {async: true}),
user: DS.belongsTo('user', { inverse: 'books', async: true}),
});
App.Chapter = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
source: DS.attr('string'),
book: DS.belongsTo('book', { inverse: 'chapters', async: true}),
user: DS.belongsTo('user', { inverse: 'chapters', async: true})
});
App.User = DS.Model.extend({
uid: DS.attr('string'),
displayName: DS.attr('string'),
firstName: DS.attr('string'),
lastName: DS.attr('string'),
books: DS.hasMany('condition', { inverse: 'user', async: true}),
chapters: DS.hasMany('statistic', { inverse: 'user', async: true}),
});
Я создал объект Session, который я впрыснуть в маршруты и контроллеры
App.Session = Ember.Object.extend({
user: null,
userID: '',
});
Ember.Application.initializer({
initialize: function (container, application) {
App.register('session:main', App.Session.create(), { instantiate: false, singleton: true });
// Add `session` object to route to check user
App.inject('route', 'session', 'session:main');
// Add `session` object to controller to visualize in templates
App.inject('controller', 'session', 'session:main');
}
});
Однако объект Session не модель и не может быть сохранен в магазине с Save() метод:
user.save()
Другим вариантом, который я изучил, является доступ к записи пользователя из пользовательского маршрутного маршрута. Маршрут пользователя:
App.UserRoute = Ember.Route.extend({
model: function() {
//var session = this.get('session');
var user = '';
var _isAutheticated = this.isAutheticated;
var store = this.store;
var _firebase = new Firebase("https://dynamicslife.firebaseio.com");
_firebase.onAuth(function(authData) {
if (authData) {
_isAutheticated = true;
console.log('user authenticated with Firebase', authData.uid);
user = store.find('user', authData.uid).then(function(_user) {
console.log('user found', _user);
return _user;
}, function(error) {
// user does not exist or some other error
console.log('please log again');
});
} else if (error) {
_isAutheticated = false;
console.log('failled login attempt', error);
}
}); //end authWithOAuthPopup
console.log('My user2: ', user);
//this.set('isAutheticated', _isAutheticated);
return user;
}
});
Я пытался нужен доступ к записи пользователя из главы контроллера:
App.ChaptersController = Ember.ArrayController.extend({
needs: 'user',
user: Ember.computed.alias("controllers.user.model"),
});
Однако пользователь по-прежнему не доступны.
Я понял, что мой синтаксис неверен. Я был бы очень признателен, если бы кто-нибудь мог указать мне правильный способ доступа к записи пользователя таким образом, чтобы его можно было модифицировать и сохранить с контроллера Chapters.
Маршрут Chapters не вложен в маршрут пользователя, потому что шаблоны не вложены. Должен ли я вложить заголовок маршрута в пользовательский маршрут, даже если шаблоны не вложены в использование ModelFor()?
И как эта модель сохраняется после этого? –