Я создаю базовое приложение, которое занимается аутентификацией пользователя и после успешной аутентификации пользователя загружает основное приложение.Как структурировать базовое приложение?
В главном приложении есть основной вид, который посвящен загрузке меню и базовому пользовательскому интерфейсу для приложения, а затем маршрутизатору перейдите к подзапросу страницы, который динамически загружает контент в контейнер, проблема заключается в том, что перемещение маршрутизатора вызывается перед базовым видом и базовый вид не может найти контейнер для добавления содержимого.
вот мой appinit.js
/*global App, $*/
(function(){
'use strict';
window.Application = {
Models: {},
Collections: {},
Views: {},
Routers: {},
Configs: {},
init: function() {
var token = Cookies.get("access_token");
var router = new Application.Routers.Approuter;
Backbone.history.start();
//Check token to find if user is logged in or not
if(token!=undefined){
//Load base view for app
var appFrame = new Application.Views.Appframe;
} else {
//If user is not logged in load login view
router.navigate('login', {trigger: true});
}
}
};
$(document).ready(function() {
Application.init();
});
})();
Мой маршрутизатор файл
/*global App, Backbone*/
Application.Routers = Application.Routers || {};
(function() {
'use strict';
Application.Routers.Approuter = Backbone.Router.extend({
routes: {
"login": "login",
"logout": "logout",
"products": "products"
},
login: function() {
new Application.Views.Login();
ReadyLogin.init();
},
products: function() {
var productsView = new Application.Views.Product;
$('#page-content-data').html(productsView.el);
},
logout: function() {
Cookies.remove('access_token');
Application.Configs.Users.token = '';
var router = new Application.Routers.Approuter;
router.navigate('login', {trigger: true});
}
});
})();
Моя база вид файла
/*global App, Backbone, JST*/
Application.Views = Application.Views || {};
(function() {
'use strict';
Application.Views.Appframe = Backbone.View.extend({
template: JST['app/scripts/templates/appframe.ejs'],
tagName: 'div',
initialize: function() {
_.bindAll(this, 'beforeRender', 'render', 'afterRender');
var _this = this;
this.render = _.wrap(this.render, function(render) {
_this.beforeRender();
render();
_this.afterRender();
return _this;
});
this.render();
},
beforeRender: function() {
},
render: function() {
var self = this;
var userModel = new Application.Models.Users;
userModel.fetch({ headers: {'Authorization' :'Bearer '+Application.Configs.Users.token} }).done(function() {
self.$el.html(self.template(userModel.toJSON()));
});
return this
},
afterRender: function(){
$('#page-container').html(this.el);
//After appending base load products route
var router = new Application.Routers.Approuter;
router.navigate('products', {trigger: true});
}
});
})();
Я застрял на этом с 3-х дней, пожалуйста, помогите ,
Я ном в позвоночнике, могу у вас немного разобраться. – Dharmendra
Я не уверен на 100%, чего вы пытаетесь достичь, поэтому немного сложно ответить на ваш вопрос + Я не использую йоман. Я могу сказать, что когда я создаю базовое приложение, я пытаюсь поставить всю «логику маршрутизации» внутри одного маршрутизатора. –
То, что я пытаюсь сделать, это позволить мне войти в систему, а затем визуализировать базовый вид (с меню и макетом приложения) с некоторыми подменю (некоторые исходные данные) один за другим, моя проблема заключается в том, что мои подвыборы не могут найти элемент в базовом представлении добавьте, потому что базовый вид еще не отображается, т. е. состояние гонки, так как я могу дождаться загрузки базового представления для инициализации моих подходов, любая помощь будет оценена по достоинству. спасибо – Dharmendra