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) {
...
});
}, ...