类固醇和角度:从数据预加载多个Web视图

时间:2014-06-23 18:50:54

标签: javascript angularjs webview steroids

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

样板代码提供了您点击的汽车列表,带您进入汽车详细页面的新webview。很容易。问题是,此视图未预加载 - 在您单击汽车列表中的汽车后加载。这会产生一种滞后的体验。

我已经阅读了预加载网页视图的内容 - 如果您没有动态数据支持的大量网页视图,那么效果会非常好。我想根据“汽车”的初始列表预加载所有详细的网页浏览量。我一直在阅读以下资源:

Preloaded Webviews from different parts of your app

Sharing Data Between webviews

Preloading Webviews

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

1 个答案:

答案 0 :(得分:0)

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

根据您描述的用例,我建议您在应用中预先加载show.html,然后每当您需要显示show.html时,您都会从视图中发送邮件消息从show.html移动它应该加载提供的id的内容。

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

我不知道我是否能够以最容易理解的方式解释这个问题,但如果我的解释不清楚,请提出更多问题) 事实证明这很简单:


以下解决方案的主要问题是创建大量网页视图时的内存问题

旧答案:         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);
};