3

SharePoint のマスター ページがあり、マスター ページでリストからデータを取得して、前述のマスター ページを使用するサイト ページに表示しようとしています。

しかし問題は、マスターページで取得したデータを非表示フィールドに格納しようとすると、最新の更新データを取得できないことです。隠しフィールドを使用する代わりに、Cookie (一種の jquery プラグイン) を使用してデータを保存し、サイト ページに取得しようとしています。しかし、最新のデータも取得できません。

最後に、サイト ページのdocument.ready()メソッドがマスター ページのdocument.ready()メソッドの前に呼び出されるため、ページがポストバックされても常に古いデータを取得するという疑問が見つかりました。

マスター ページとサイト ページの間で通信するためのより良い方法はありますか?

または、マスター ページの document.ready() メソッドがサイト ページの document.ready() の前に呼び出されるようにする方法はありますか?

この問題を解決する醜い方法を見つけました: を使用して、マスター ページの後setTimeout("getTabTips()",1000);にサイト ページを呼び出します。document.ready()この質問に対する美しい答えを見つけたいのですが、助けてください。

4

1 に答える 1

1

私も同様の問題を抱えていましたが、いくつかの調査の結果、同じ結論に達しました: Cookie を使用します。という名前の小さなクラスにラップしましたLocalConnection: https://github.com/jeremyharris/local_connection

LocalConnection はコールバックを使用するため、その構文はよく知られているはずです。コールバックを使用するため、他のページの準備が整ったことをマスターに伝えるコールバックを設定することもできます。

主人

var c = new LocalConnection({
  name: 'mycookiename'
});
// start listening
c.listen();
c.addCallback('ready', function(pageId) {
  // sub page ready
});

サブページ

var c = new LocalConnection({
  name: 'mycookiename'
});
// start listening
c.listen();
$(document).ready(function() {
  c.send('ready', 'somePageId');
});

LocalConnection では、これはまったく必要ありません。イベントはキューに入れられ、レシーバーが Cookie を読み取ったときに発生するため、マスターは「イベントを発生させる」ことができ、レシーバー ページが開いたときにそれらをトリガーします。

于 2012-10-18T14:45:56.610 に答える