MyView.js:Как ссылаться на Магистральную/Марионовую Внутри?
define(['app/models/MyModel'],
function (MyModel) {
return Mn.LayoutView.extend({
template: '#my-template',
className: 'my-classname',
regions: {
content: '.content-region',
panel: '.panel-region'
}
initialize: function() {
_.bindAll(this, 'childButtonClicked');
},
onShow: function() {
this.getRegion('content').show(new AnotherView());
},
childEvents: {
'some-child-click': 'childButtonClicked'
},
childButtonClicked: function (view) {
var newView = new MyView({
model: new MyModel({
title: view.model.get('title')
})
});
this.getRegion('panel').show(newView);
}
});
});
Я пытаюсь гнездовых экземпляров MyView внутри себя. Это работало правильно, когда я строил прототип, сваливая все в одну функцию, например, так:
var MyView = Mn.LayoutView.extend({
...
childButtonClicked: function(view) {
var newView = new MyView({
...
Теперь, когда я пытаюсь отделить просмотров в свои собственные файлы и использовать require.js, я не могу выяснить синтаксис для самореферентного представления.
Когда я запускаю этот код как есть, я получаю сообщение об ошибке «MyView is undefined».
Если добавить его в заголовок требуется примерно так:
define(['app/models/MyModel', 'app/views/MyView'],
function (MyModel, MyView) {
Я получаю ошибку 'MyView не является функцией.
EDIT для решения:
Отмеченное решение работает отлично, я в конечном итоге, используя очевидное-в-hindslght:
define(['app/models/MyModel'],
function (MyModel) {
var MyView = Mn.LayoutView.extend({
template: '#my-template',
className: 'my-classname',
regions: {
content: '.content-region',
panel: '.panel-region'
}
initialize: function() {
_.bindAll(this, 'childButtonClicked');
},
onShow: function() {
this.getRegion('content').show(new AnotherView());
},
childEvents: {
'some-child-click': 'childButtonClicked'
},
childButtonClicked: function (view) {
var newView = new MyView({
model: new MyModel({
title: view.model.get('title')
})
});
this.getRegion('panel').show(newView);
}
});
return MyView;
});