Backbone layouamanager でネストされたビューを使用しようとすると、奇妙なエラーが発生します。入れ子になったビューを次に示します (RequireJS も使用しています)。
define([
'jquery',
'underscore',
'backbone',
'templates',
], function ($, _, Backbone, JST) {
'use strict';
var ResultsView = Backbone.View.extend({
template: JST['app/scripts/templates/results.ejs'],
});
return ResultsView;
});
親レイアウト ビューは次のとおりです。
define([
'jquery',
'underscore',
'backbone',
'templates',
'layoutmanager',
'views/results-view'
], function ($, _, Backbone, JST, manager, ResultsView) {
'use strict';
Backbone.Layout.configure({
manage: true
});
var AppView = Backbone.Layout.extend({
template: JST['app/scripts/templates/App.ejs'],
el: '#container',
views: {
"#search-results": new ResultsView()
}
});
return AppView;
});
親レイアウトをインスタンス化するコードは次のとおりです。
define([
'jquery',
'underscore',
'backbone',
'views/App-view'
], function($, _, Backbone, AppView){
var initialize = function(){
new AppView().render();
};
return {
initialize: initialize
};
});
ページをロードすると、次のエラーが表示されます。
"Uncaught TypeError: Cannot read property 'ownerDocument' of undefined"
エラーはJqueryから来ています。上記のコードからこの行を削除すると:
el: '#container',
エラーはなくなります。私はまだ Backbone を使い始めたばかりなので、ビューの使い方が間違っているのでしょうか? 助けてくれてありがとう