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_Marionette - Fatal编程技术网

Javascript 主干视图未定义不是函数冲突

Javascript 主干视图未定义不是函数冲突,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,我有以下两种看法: 显示视图 define(['backbone', 'hbs!tmpl/show_tmpl', 'item/hide'], function (Backbone, Hide) { return Backbone.Marionette.ItemView.extend({ initialize: function () { console.log('initialize a UserLogin Item

我有以下两种看法:

显示视图

define(['backbone', 'hbs!tmpl/show_tmpl', 'item/hide'],
    function (Backbone, Hide) {
        return Backbone.Marionette.ItemView.extend({
            initialize: function () {
                console.log('initialize a UserLogin ItemView');

                console.log(Hide); // this comes in as undefined
            }, ...
隐藏视图

define(['backbone', 'hbs!tmpl/hide_tmpl', 'item/hide', 'item/show'],
    function (Backbone, Hide, Show) {
        return Backbone.Marionette.ItemView.extend({
            initialize: function () {
                console.log('initialize a UserLogin ItemView');

                console.log(Hide);
                console.log(Show);
            }, ...
问题是
console.log(隐藏)显示视图中的code>显示为
未定义

如果我从
隐藏视图中删除
'item/hide'
,那么它可以正常工作

我的想法是我需要能够做到:

var hide = new Hide();
hide.methodOnShow();
显示视图中

var show = new Show();
show.methodOnHide();
隐藏视图中

插件:如果这有帮助的话,两个视图都在打开一个模式,所以我在show模式中单击一个click并打开hide模式,反之亦然

如果我在打开每个模式之前刷新页面,它们可以正常工作,但不能从打开模式内部打开它们


关于如何解决这个问题有什么想法吗?

应该在末尾添加不返回的依赖项(在其他参数之后)


item/hide
是一个隐藏视图,而
item/show
是一个显示视图吗?不一定,它们只是得到实例化,这样我就可以调用
methodOnHide
methodswait,需要js根据文件名解析DEP,所以如果您需要通过item/hide加载HideView,您将得到圆形DEP,因为隐藏视图需要自己加载模块。使用showView关闭案例。它需要隐藏视图,但HideView需要ShowView来启动。正如我所看到的,您需要在这些类型的视图之间进行切换来组织一些逻辑,最好的做法是使用控制器进行此类交互。控制器加载这两个视图并在运行时对其进行管理。你可以提供一些你将要达到的信息我可以帮助你重构你的代码在依赖数组中,你可以把hbs!tmpl/show\u最后显示tmpl依赖关系并进行尝试。
define(['backbone',  'item/hide','hbs!tmpl/show_tmpl'],
    function (Backbone, Hide) {
        return Backbone.Marionette.ItemView.extend({
            initialize: function () {
                console.log('initialize a UserLogin ItemView');

                console.log(Hide); // this comes in as undefined
            }, ...
initialize: function () {
    require(['application', 'item/hide'], function (App, Hide) {
        ...
    });
}, ...