Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 JS模式窗口(弹出窗口)之间的通信_Javascript - Fatal编程技术网

Javascript JS模式窗口(弹出窗口)之间的通信

Javascript JS模式窗口(弹出窗口)之间的通信,javascript,Javascript,在您看来,在模式A和模式B之间进行沟通的最佳方式(或某些方式)是什么它们不是同时存在的。一个打开另一个。 需要发生什么: (在这个非常具体的案例中,但有很多案例) 模式A触发(打开)模式B,用户从列表中选择内容,然后在应用后,他将被发送回模式A(基本上是触发当前模式的最后一个模式)现在,模式A需要显示从模式B中选择的数据 将数据从B传递到A的方法: 使用某种临时本地存储或共享内存对象,模态A将在启动时始终检查并执行操作(然后清除)。此对象将始终存储另一个弹出窗口中可能需要的任何数据,如果某

在您看来,在模式A模式B之间进行沟通的最佳方式(或某些方式)是什么它们不是同时存在的。一个打开另一个。

需要发生什么: (在这个非常具体的案例中,但有很多案例)

模式A触发(打开)模式B,用户从列表中选择内容,然后在应用后,他将被发送回模式A(基本上是触发当前模式的最后一个模式)现在,模式A需要显示从模式B中选择的数据

将数据从B传递到A的方法:
  • 使用某种临时本地存储或共享内存对象,模态A将在启动时始终检查并执行操作(然后清除)。此对象将始终存储另一个弹出窗口中可能需要的任何数据,如果某个弹出窗口需要与另一个弹出窗口相关的数据,则该弹出窗口将知道如何检查该对象所需的内容

  • 模态B将通过一些数据直接传递给它应该打开的模态,这些数据将附加到打开回调的按钮上,如下所示:
    继续

你还有别的想法吗?也许是更好的


更新
最后,我将关闭的模态窗口(触发模态B的窗口)存储在内存中,并使用自定义事件发布模态A控制器将订阅的任何数据,并在DOM位于内存中时相应地更改其视图,因此一旦模态A从我的模态历史数组中恢复,它已经被更新了。关闭所有模块后,清除历史对象。

在其他GUI平台上使用事件解决此问题。您可以广播其他区域接收的数据,这样您就可以缩放模态实例,而不必依赖于硬编码键或对象文字

模式A可以侦听事件模式。捕获数据,而模式B可以发出事件模式。单击应用按钮时捕获数据

现在,当您向其中添加更多模态时,您可能需要添加一些凭证检查或特定事件,以确定何时应用接收到的数据

还有很多JS库可以处理自定义事件:jQuery、Angular(基于
$scope/$rootScope
)或EventEmitter。

更新: 既然你说你不用角形。这是另一个例子

全局函数,但不推荐使用:

创建一个执行desire更新的全局函数,当选中复选框时,执行该函数

function UpdateModalAbackgroundImage(imageUrl)
{
// update here...
}
// I suppose your are using jquery at least
$('.mycheckboxs').click(function(){
// some logic

UpdateModalAbackgroundImage(mycustomurl)// since is global, you can execute it.
});
现在,当您单击复选框时,执行该函数

function UpdateModalAbackgroundImage(imageUrl)
{
// update here...
}
// I suppose your are using jquery at least
$('.mycheckboxs').click(function(){
// some logic

UpdateModalAbackgroundImage(mycustomurl)// since is global, you can execute it.
});

只需确保在将模态B附加到主体时定义了UpdateModalAbackgroundImage函数。

这些是单独的窗口还是在相同的上下文中(例如:JS驱动的模态)?是JS模态窗口。它们是我正在设计的模态系统的一部分。这两个模态彼此完全分离,行为像独立的单元,但也可以相互触发和交互。模态B是控制器吗?它们都有自己的控制器。但是,如果在任何给定的时间内只有一个模态存在,一个如何听另一个模态?我只有一个单一的模式,它的视图会根据需要呈现给用户的模式进行更新。一旦用户从某个模式打开一个模式,它就会替换该模式。如果此进程在同一上下文中的同一线程上运行,则无论向用户显示了什么,两个控制器都应该处于活动状态,除非您在运行中销毁/构造控制器。是的,我正是这样做的。它们在需要时被重新构造。在我需要这种特殊的交流之前,它一直很有效。我可以修改架构,使它们永远不会“死亡”。现在它们只是..当某个弹出窗口打开时作为回调触发的函数,我确切地知道为哪个控制器触发哪个。Ooops。。。嗯,和他们一样。在这种情况下,我将编辑我的答案