Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在其内部引用主干/木偶视图?_Javascript_Backbone.js_Constructor_Marionette_Backbone Views - Fatal编程技术网

Javascript 如何在其内部引用主干/木偶视图?

Javascript 如何在其内部引用主干/木偶视图?,javascript,backbone.js,constructor,marionette,backbone-views,Javascript,Backbone.js,Constructor,Marionette,Backbone Views,MyView.js: define(['app/models/MyModel'], function (MyModel) { return Mn.LayoutView.extend({ template: '#my-template', className: 'my-classname', regions: { content: '.content-region',

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未定义”的错误

如果我将其添加到require头中,如下所示:

define(['app/models/MyModel', 'app/views/MyView'],
    function (MyModel, MyView) {
我得到错误“MyView不是函数”

编辑解决方案:

标记的解决方案效果很好,我最终使用了后视镜中明显的:

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;
    });
您可以在模块中
require()
var MyView=require(app/views/MyView)

因此,为了寻找更好的地方:

childButtonClicked: function (view) {
    var MyView = require(app/views/MyView);
    var newView = new MyView({
        model: new MyModel({
            title: view.model.get('title')
        })
    });
    this.getRegion('panel').show(newView);
}