2016-08-27 7 views
4

Amplify.jsのパブリッシュ/サブスクライブを2つのファイルで処理しようとしています。Amplify.jsパブリッシュとサブスクライブが2つの別々のファイルにある場合、サブスクリプションが機能しない

コードが1つのファイルでは動作しますが、発行するファイルが1つのファイルで であり、サブスクライブが別のファイルにある場合は動作しません。

ここには、サブスクライブと発行の呼び出しが同じファイル にあるコードがあります。これは機能します。
amplify.subscribe機能で「線amplify.subscribe後に」「入力ページ」

」のparam:

<html> 
<head> 
<script type="text/javascript" src="./js/jquery-1.8.2.min.js"> </script> 
<script 
    type="text/javascript" src="./js/amplify-1.1.2/amplify.min.js"> 
</script> 
</head> 
<body> 
<H1>My amp pub/sub page</H1> 
<script type="text/javascript"> 
alert("entering page"); 
amplify.subscribe("dataExample", function(param) { 
alert("In the amplify.subscribe function, 
param is: " + param.foo); }); 
alert("after line amplify.subscribe"); 
result = amplify.publish("dataExample", { foo: "bar" }); 
alert ("After amplify.publish, result is " + result); 
</script> 
</body> 
</html> 

結果は、このように、期待 順にアラートを出力します次のとおりです。amplify.publish後バー」
『私が加入し、 amplify.subscribe関数が呼び出されることはありません別のファイルにパブリッシュ入れた場合、結果は』

真です。この テストのために、私は2つのブラウザ(両方のFirefox)を持っています。私は1つの ブラウザで購読をしてから、もう一方に公開します。ここで

は、サブスクライブ用のコード(私は単に公開部分を切り取る)

<html> 
<head> 
<script type="text/javascript" src="./js/jquery-1.8.2.min.js"></script> 
<script type="text/javascript" src="./js/amplify-1.1.2/amplify.min.js"> 
</script> 
</head> 
<body> 
<H1>My amp sub page</H1> 
<script type="text/javascript"> 
alert("entering page"); 
amplify.subscribe("dataExample", function(param) { 
    alert("In the amplify.subscribe function, param is: " + 
    param.foo); }); 
alert("after line amplify.subscribe"); 
</script> 
</body> 
</html> 

公開のためのコード(私はパートを購読切り取る)

<html> 
<head> 
<script type="text/javascript" src="./js/jquery-1.8.2.min.js"></script> 
<script type="text/javascript" src="./js/amplify-1.1.2/amplify.min.js"> 
</script> 
</head> 
<body>  
<H1>My amp pub page</H1> 
<script type="text/javascript"> 
alert("entering page");  
result = amplify.publish("dataExample", { foo: "bar" }); 
alert ("After amplify.publish, result is " + result); 
</script> 
</body> 
</html> 

は、私はFirefoxバージョン47.0を使用していますです.1
Chromeを使用しているときも同じ問題があります。

誰にもこれに関するアイデアはありますか?

公開データがどこに保存されているのですか?どれだけの時間?
どうすればそれがあるかを確認できます。
サブスクリプションでデータを検索する場所はどこですか?
公開購読は2つのファイルで動作しますか?

答えて

1

公開データはどこにも保存されません。

コールバック関数が格納されます。通常の変数内で増幅する。イベント名が&のキーとしてコールバック関数を値として持つマップを想像してみてください。

イベント名を使用してパブリッシュすると、そのイベントのコールバックは、渡されたデータで実行された&マップから取得されます。

ここでの問題は、マップが他のJavaScript変数と同様に、すべてのページにローカルであることです。

  • したがって、最初のページではコールバックのみが保存されますが、イベントを呼び出す同じページ内にコードはありません。
  • 2番目のページにはコールバックが定義されていないため、そのイベントを処理するものはありません。

あなたが探しているのは、ページ間でJavaScript変数を共有する方法です。 SOのクイック検索でいくつかの試みが明らかになりました。私は、彼らはあなたが同じの実装を支援するべきだと思う:

関連する問題