3

我有一个 SharePoint 母版页,在母版页中,我尝试从列表中检索一些数据,并将它们显示在使用我之前提到的母版页的网站页面中。

但问题是,当我尝试将在母版页中检索到的数据存储到隐藏字段时,我无法获取最新更新的数据。我没有使用隐藏字段,而是尝试使用 cookie(一种 jquery 插件)来存储数据并在站点页面中获取它们。但我也无法获得最新数据。

最后,我发现了一个问题:站点页面的document.ready()方法是在母版页的方法之前调用的document.ready(),所以即使页面回发,我总是得到旧数据。

我可以有更好的方式在母版页和站点页面之间进行通信吗?

或者是否有任何方法可以确保在站点页面的 document.ready() 之前调用母版页的 document.ready() 方法?

我找到了一种解决这个问题的丑陋方法:我使用setTimeout("getTabTips()",1000);使网站页面document.ready()在母版页之后调用。但实际上,它并没有那么完美!我真的很想为这个问题找到一个漂亮的答案,请帮帮我?

4

1 回答 1

1

我遇到了类似的问题,经过一番研究,我得出了同样的结论:使用 cookie。我将它包装在一个名为LocalConnectionhttps ://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 时,事件会排队并触发,因此 Master 可以“触发事件”,并且接收者页面会在它们打开时触发它们。

于 2012-10-18T14:45:56.610 回答