0

我正在尝试构建一个具有多个视图(屏幕、页面内容)的单页应用程序

我的应用程序的 UI 有一个永久菜单栏和一个“视图区域”,它根据菜单选择通过 Ajax 检索视图。这对于简单的 HTML 内容非常有用,并且可以让我的菜单脚本在后台运行,而不管正在显示哪个视图。

但是如果我的视图需要一个额外的脚本呢?由于视图更改(=由于单击按钮而加载页面片段),您如何加载和执行脚本,当我选择不同的视图时如何摆脱该脚本?

我知道我可以在页面片段中嵌入一个脚本标签并在那里编写代码,但我真的在寻找一种更强大的方法来做到这一点,最好是在加载视图时创建一个对象的实例并且然后在视图更改时丢弃。

4

2 回答 2

1

yepnope.js是一个很棒的条件加载器。您可以在加载脚本之前使用它来检查某些条件(例如视图、状态)。不过,我认为它无法删除已经加载的脚本。

于 2012-05-02T14:00:15.283 回答
1

<script>您可以像添加任何其他标签一样使用 javascript 添加标签。

最困难的部分是知道在哪里放置它,但如果你可以控制你的标记,这不是太大的障碍。

这些方面的东西:

function DST(url)
{
    var s = document.createElement(’script’);
    s.type=’text/javascript’;
    s.src= url;
    document.getElementsByTagName(’head’)[0].appendChild(s);
}

如果您需要在加载该脚本时自动发生某些事情,您应该能够使用自执行匿名函数来完成这项工作。

(function(){alert('this happened automatically');})();

如果您需要将任何内容传递给函数,它将如下所示:

(function($){alert('this happened automatically');})(jQuery);

如果您确实需要丢弃脚本,您可以删除节点,但最好保留它们,以防用户重新激活视图,因此您不必进行 AJAX 调用和关联的 HTTP 请求,允许页面加载速度更快。

于 2012-05-02T14:06:03.133 回答