Javascript Appgyver类固醇,Web视图中的更新对象赢得';不显示

Javascript Appgyver类固醇,Web视图中的更新对象赢得';不显示,javascript,angularjs,steroids,Javascript,Angularjs,Steroids,我正在用Appgyver类固醇和AngularJs开发一个HTML5移动应用程序。 该应用程序使用一个全局javascript对象来填充步骤中的信息,并由整个应用程序使用。 在我需要创建一个gallery.html并从主控制器将其作为web层推送之前,一切都很顺利。main.html和gallery.html都有自己的控制器。html按预期显示javascript对象中的所有图片,当我删除它们时,它们也会按预期从javascript对象中删除。 但是,当我返回main.html并单击“galle

我正在用Appgyver类固醇和AngularJs开发一个HTML5移动应用程序。 该应用程序使用一个全局javascript对象来填充步骤中的信息,并由整个应用程序使用。 在我需要创建一个gallery.html并从主控制器将其作为web层推送之前,一切都很顺利。main.html和gallery.html都有自己的控制器。html按预期显示javascript对象中的所有图片,当我删除它们时,它们也会按预期从javascript对象中删除。 但是,当我返回main.html并单击“gallery”时,它们又都在gallery.html中了

我想一定是范围问题或是多个实例的问题?如何让gallery.html读取实际对象(删除所有图片后没有图片的对象)?为什么gallery.html不更新其值?我一直在运行代码,它没有什么问题,但当我在web层中使用它时,就会发生这种情况

在主控制器中:

$scope.gallery = function(roomId, detailId) {
    pictures = inspectionService.getPictures(roomId, detailId);

    if (pictures.length > 0) {
        webView = new steroids.views.WebView("/views/inspection/gallery.html?roomId=" + roomId + '&detailId=' + detailId);
        steroids.layers.push(webView);
    } else {
        this.camera();
    }
};
function init(){
    roomId = steroids.view.params.roomId;
    detailId = steroids.view.params.detailId;
    updateGallery();
}

//UPDATING GALLERY
function updateGallery() {
    $scope.pictures = inspectionService.getPictures(roomId, detailId);
    $scope.info = inspectionService.getRoom(roomId).name + ": " + inspectionService.getDetail(roomId, detailId).name;
};

//REMOVE PICTURE
$scope.removePicture = function(pictureUri) {
    inspectionService.removePicture(roomId, detailId, pictureUri);
    updateGallery();

    if (pictures.length <= 0) {
        steroids.layers.pop();
    }
};
在库控制器中:

$scope.gallery = function(roomId, detailId) {
    pictures = inspectionService.getPictures(roomId, detailId);

    if (pictures.length > 0) {
        webView = new steroids.views.WebView("/views/inspection/gallery.html?roomId=" + roomId + '&detailId=' + detailId);
        steroids.layers.push(webView);
    } else {
        this.camera();
    }
};
function init(){
    roomId = steroids.view.params.roomId;
    detailId = steroids.view.params.detailId;
    updateGallery();
}

//UPDATING GALLERY
function updateGallery() {
    $scope.pictures = inspectionService.getPictures(roomId, detailId);
    $scope.info = inspectionService.getRoom(roomId).name + ": " + inspectionService.getDetail(roomId, detailId).name;
};

//REMOVE PICTURE
$scope.removePicture = function(pictureUri) {
    inspectionService.removePicture(roomId, detailId, pictureUri);
    updateGallery();

    if (pictures.length <= 0) {
        steroids.layers.pop();
    }
};
函数init(){
roomId=steroids.view.params.roomId;
detailId=steroids.view.params.detailId;
updateGallery();
}
//更新库
函数updateGallery(){
$scope.pictures=inspectionService.getPictures(roomId,detailId);
$scope.info=inspectionService.getRoom(roomId).name+“:”+inspectionService.getDetail(roomId,detailId).name;
};
//删除图片
$scope.removePicture=函数(pictureUri){
inspectionService.removePicture(roomId、detailId、pictureUri);
updateGallery();

if(pictures.lengthAppGyver employee here!Steroids中的webview是单独的“浏览器”实例,每个实例都有自己的DOM和JavaScript运行时。我写了一个关于这个主题的快速指南,请查看:


基本上,您需要确保在不同视图之间保持
inspectionService
状态–指南中关于使用后台HTML Web视图的最后一节应该很有用!

谢谢harsa!我遵循了您的指南,但仍然无法使其工作。我的background.HTML无法加载。您能提供一个代码检查吗ple?仅仅使用localStorage来存储我的javascript对象还不够吗?这样,不管有多少个servicer实例,都只有一个json对象?我真的被困在这里了。当然,另一种方法是对服务进行编码,使其只访问/操作单个
localStorage
项,这将确保“master”对象。预加载
background.html
是一个更健壮的解决方案,所以您可能不需要它。告诉我您是否有
localStorage
解决方案可以使用!Thx!我从上一篇文章开始就一直在进步。我现在使用localStorage来存储我的“master”"对象和我的服务进行设置并从中获取。控制器通过服务访问主对象。我仍然存在一些问题,我认为这些问题是由于您所解释的不一致状态造成的。我非常有兴趣让background.html解决方案发挥作用。我按照您的指导进行了操作,但无法使预加载的background.html生效加载。换句话说,background.html中的javascript不会运行。请详细介绍一下bakground.html解决方案好吗?