Appgyver Steroids,Web View中的更新对象将不会显示

时间:2013-11-05 21:20:59

标签: javascript angularjs steroids

我正在使用Appgyver Steroids和AngularJs开发HTML5移动应用程序。 该应用程序使用全局JavaScript对象填充步骤中的信息,并由整个应用程序使用。 一切都很顺利,直到我需要创建一个gallery.html并将其作为主控制器的Web层推送。 main.html和gallery.html有自己的控制器。 Gallery.html按照预期从javascript对象显示所有图片,当我删除它们时,它们也会从javascript对象中删除,如预期的那样。 但是,当我返回main.html并点击“图库”时,他们又在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();
    }
};

1 个答案:

答案 0 :(得分:6)

AppGyver员工在这里! Steroids中的WebViews是单独的“浏览器”实例,每个实例都有自己的DOM和JavaScript运行时。我写了一篇关于这个主题的快速指南,请查看:http://guides.appgyver.com/steroids/guides/steroids-js/sharing-data-between-webviews/

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