追加のビューを非同期で読み込んでレンダリングし、それらを ItemView に追加しようとしています。
単純化されたコード -のブロックで$el
定義されていないのはなぜですか - ここで何が欠けていますか? 私は RequireJS を適切に使用していないのでしょうか、それともマリオネットですか、それとも単に JavaScript の経験が浅いのでしょうか?require()
render()
これを行うための推奨される方法は何ですか? 追加のセクション ビューが実行時に利用可能になる可能性があるため、動的である必要がありますが、プラグインによって登録されていることはまだわかりません。
define(['require','marionette', 'App', 'swig', 'backbone.wreqr','text!./settings.html'],
function (require,Marionette, App,Swig, Wreqr, settingsHtml )
{
var sectionViews = ['./settingscontent/GeneralView'];
var SettingsView = Marionette.ItemView.extend(
{
template: Swig.compile(settingsHtml),
commands: new Wreqr.Commands(),
initialize: function ()
{
this.commands.addHandler('save', function (options, callback)
{
callback();
});
Marionette.ItemView.prototype.initialize.apply(this, arguments);
},
render: function()
{
Marionette.ItemView.prototype.render.call(this);
var $el = this.$el;
var self = this;
require(sectionViews, function (View)
{
$el.find('div.tab-content').append(new View(self.model).render().$el);
// $el is not defined
// self != outer this - $el is an empty div
});
return this;
}
}
return SettingsView;
})