您可以在不覆盖数据的情况下使用相同的视图和角度控制器吗?

Can you use the same view and angular controller without overwriting the data?

本文关键字:视图 控制器 覆盖 情况下 数据      更新时间:2023-09-26

我有一个使用 PDF 查看器-pdf angularjs 的应用程序,这个查看器使用 html 模板有了自己的控制器 AngularJS,这个查看器想在不同的目录中使用它(即它是global)查看器,当我打开一个 PDF 目录和位置时,我工作得很好,但当你打开另一个时我在上一个窗口中解锁了另一个加载pdf,但没有打开的地方,即数据覆盖了我有没有办法解决这个问题,在多个目录中打开同一个查看器而不影响其他目录?

如果您将 PDF 查看器设置为指令,您应该能够实现这一点,因为指令在其自己的范围内运行。

这就是我创建如下所示的服务的原因:

angular.module('myModule',['pdf']).service('pdfService', function () {
    var pdfURL = "";
    var defineURL = function (url) {
        pdfURL = url;
    };
    var getURL = function () {
        return pdfURL;
    };
    return {
        defineURL: defineURL,
        getURL: getURL
    };
}).controller('DocControlador', ['$scope', 'pdfService', function ($scope, pdfService) {
    $scope.pdfName = '';
    $scope.pdfUrl = pdfService.getURL(); 
    $scope.scroll = 0;
    $scope.loading = 'cargando...';
    $scope.getNavStyle = function (scroll) {
        if (scroll > 100) return 'pdf-controls fixed';
        else return 'pdf-controls';
    }
    $scope.onError = function (error) {
        console.log(error);
    }
    $scope.onLoad = function () {
        $scope.loading = '';
    }
    $scope.onProgress = function (progress) {
        console.log(progress);
    }
}])

在这里,我将值分配给来自另一个控制器的服务变量:

pdfService.defineURL("''Files''1''Charts''" + $scope.fileName);