0

我正在使用一个类固醇生成器 ng-resource,它根据一些本地 json 数据生成了控制器/模型/视图。它有一个 index.html 和一个 detail.html

样板代码提供了您单击的汽车列表,将您带到汽车详细页面的新 Web 视图。很容易。问题是,这个视图没有预加载——它是在你点击汽车列表中的一辆车后加载的。这会产生滞后的体验。

我已经阅读了预加载 webviews - 如果您没有一堆由动态数据驱动的 webviews,它会非常有用。我想根据“汽车”的初始列表预加载所有详细的网络视图。我一直在阅读以下资源:

来自应用不同部分的预加载 Webview

在 webviews 之间共享数据

预加载 Web 视图

我没有很多原始代码可以提供——只是 ng-resource 的样板示例。我想知道什么是满足我需求的最佳技术方法。尝试在导航时获得原生应用的感觉。

4

1 回答 1

0

编辑:这是来自 Appgyver/Steroids 团队的更好答案

根据您对用例的描述,我建议您在应用程序中预加载 show.html 一次,然后每当您需要显示 show.html 时,您将从您要移动的视图发送一条 postmessage 到show.html 它应该加载提供的 id 的内容。

如果您必须从远程服务器加载内容,您应该发送两个 postmessage,第一个包含您在前一页上已有的任何信息,这些信息将在 show.html 页面上使用。

我不知道我是否能够以最容易理解的方式解释这一点,但如果我的解释不清楚,请提出更多问题)原来这很容易:


下面我的解决方案的主要问题是创建大量 web 视图的内存问题

旧答案:for(var i =0; i

       var webView = new steroids.views.WebView({location:"/views/cars/show.html?        id="+id,id:id});
console.log(webView);
webView.preload({}, {
onSuccess: function() {
//steroids.layers.push(webView);
console.log('working');
 }
});
}

然后使用另一个函数调用具有相同 id 的 webview:

  $scope.open = function(id) {

var webView = new steroids.views.WebView({location:"/views/cars/show.html?id="+id,id:id});
steroids.layers.push(webView);
};
于 2014-07-01T23:11:12.610 回答