我创建一个应用骨干与用户认证和交易成功后,认证用户加载主应用程序。如何构建骨干应用程序?
在主应用程序中有一个主视图,它处理应用程序的加载菜单和基本UI,然后路由器导航到将内容动态加载到容器中的页面子视图,此处的问题是在基本视图之前调用路由器导航被渲染并且基本视图不能找到容器来追加内容。
这里是我的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, 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天停留在这个
/*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});
}
});
})();
我的基本观点文件,请帮帮忙。
我在骨干小白,u能请详细一点。 – Dharmendra
我不是100%确定你想要达到的目标,所以回答你的问题有点困难+我不使用yeoman。我能说的是,当我建立一个骨干的应用程序,我尝试把所有的“路由逻辑”一个路由器内部。 –
我想要做的是让我的用户登录,然后呈现一个接一个的基本视图(与应用程序菜单和布局)与一些子视图(一些初始数据),我的问题是我的子视图找不到元素在基本视图中追加到因为基本视图还没有呈现,即种族的条件,所以如何等待我的基础视图加载为我的子视图的初始化,任何帮助,将不胜感激。谢谢 – Dharmendra