내 응용 프로그램에서 나는 그 레이아웃에 대한 레이아웃과보기가 있습니다. 레이아웃은 로그인/로그 아웃시에만 변경되지만 다른 특별한 경우는 pageload에 있습니다. 적절한 레이아웃을로드해야합니다. 그러나 내 defaultAction
에서 내 레이아웃은 실제로 반환하지 않으므로 렌더가 렌더링하려고 시도 할 때 el
이 포함되어 있다고 가정합니다.백본보기 순서대로 렌더링되지 않습니다
// Filename: router.js
var app_router;
define([ 'views/layouts/beta', 'views/beta/requestInvite', 'views/beta/login', 'views/app/dashboard' ],
function(betaLayout, requestInviteView, loginView, dashboardView) {
var AppRouter = Backbone.Router.extend({
routes : {
// Pages
'login' : 'login',
'dashboard' : 'dashboard',
// Default
'*actions' : 'defaultAction'
},
// Pages
login : function() {
loginView.render();
},
dashboard : function() {
dashboardView.render();
},
// Default
defaultAction : function(actions) {
betaLayout.render();
requestInviteView.render();
}
});
var initialize = function() {
app_router = new AppRouter;
$('a').live('click', function() {
var href = $(this).attr('href');
// only navigate to real links
if(href == undefined)
return;
app_router.navigate(href, {trigger: true});
return false;
});
Backbone.history.start({pushState: true});
};
return {
initialize : initialize
};
});
보기 전에 내 레이아웃을 완전히 렌더링 할 수 있습니까?
처음에 시도했지만 레이아웃이 이미 렌더링 된 것으로 나타났습니다.보기가 ** 전에 ** 초기화 되었기 때문에 '엘'이 비어있었습니다. – Garrett
아, 그럼'requestInviteView'의'initialize' 중에'betaLayout'의'el'을 조작하고 있습니까? 필요한 파일에서 인스턴스를 반환하는 것처럼 보이므로 [주문! plugin] (http://requirejs.org/docs/1.0/docs/download.html#order) (RequireJS 1.0을 사용하는 경우) 파일을 강제로 실행하고 올바른 순서로 초기화해야합니다. 그렇지 않은 경우, 조작 코드를'requestInviteView'의'render'로 옮기십시오. 그러면 실행 시점을 명시 적으로 제어 할 수 있습니다. – freejosh