angularJS控制器和PDF
我和angularJS一起工作,在控制器方面有一些困难 我有一个页面在这个页面上我有两个控制器一个从web服务接收数据,一个在pdfViewer上显示数据 我的想法是在第一个控制器接收到数据后启动第二个控制器,因为现在两个控制器似乎同时启动,所以没有显示任何内容 下面是我的视图代码:angularJS控制器和PDF,angularjs,pdf,controller,Angularjs,Pdf,Controller,我和angularJS一起工作,在控制器方面有一些困难 我有一个页面在这个页面上我有两个控制器一个从web服务接收数据,一个在pdfViewer上显示数据 我的想法是在第一个控制器接收到数据后启动第二个控制器,因为现在两个控制器似乎同时启动,所以没有显示任何内容 下面是我的视图代码: var seeCv=angular.module('myApp',['ngPDFViewer']); 参见CV.controller('TestCtrl',函数($http){ $http.get('someUR
var seeCv=angular.module('myApp',['ngPDFViewer']);
参见CV.controller('TestCtrl',函数($http){
$http.get('someURL').success(函数(数据){
数据=数据;
});
});
参见CV.controller('VisuCvCtrl',['$scope','PDFViewerService',函数($scope,pdf){
$scope.pdfURL=数据;
$scope.instance=pdf.instance(“查看器”);
$scope.nextPage=函数(){
$scope.instance.nextPage();
};
$scope.prevPage=函数(){
$scope.instance.prevPage();
};
$scope.pageLoaded=函数(curPage,totalPages){
$scope.currentPage=curPage;
$scope.totalPage=totalPages;
};
}]);代码>
{{currentPage}/{{totalPage}
每个控制器都有自己的作用域,您试图从VisucCtrl访问testController作用域,实际上您试图从子控制器使用父控制器作用域。您可以这样做:
seeCv.controller('TestCtrl',function($http){
$http.get('some url').success(function(data){
datas = data;
});
});
seeCv.controller('VisuCvCtrl',['$scope','PDFViewerService',function($scope,pdf){
$scope.pdfURL = $scope.$parent.datas;
...
}]);
无论如何,我建议使用一个服务来获取数据(这样您也可以在其他控制器中重用service get函数)。
控制器将使用该服务获取数据并将其置于作用域中,以便视图可以使用该数据。我找到了在同一控制器中执行此操作的方法:
seeCv.controller('VisuCvCtrl',['$scope','$http','PDFViewerService',function($scope,$http,pdf){
var promise = $http.get('some url').success(function(data){
datas = data;
});
promise.then(
function(display){
$scope.pdfURL = datas;
$scope.instance = pdf.Instance("viewer");
$scope.nextPage = function(){
$scope.instance.nextPage();
};
$scope.prevPage = function(){
$scope.instance.prevPage();
};
$scope.pageLoaded = function(curPage, totalPages){
$scope.currentPage = curPage;
$scope.totalPage = totalPages;
};
});
}]);
但问题是,现在我每10秒就重复一次这样的错误
错误:[$interpolate:interr]errors.angularjs.org/1.2.9/$interpolate/interr?p0=%7B%7pdfurl%7D%7D…2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%
错误(本机)
在code.angularjs.org/1.2.9/angular.min.js:6:449
at Object.$get.s()
在h.Bd.$get.h.$digest(code.angularjs.org/1.2.9/angular.min.js:100:171)
在h.Bd.$get.h.$apply(code.angularjs.org/1.2.9/angular.min.js:103:100)
在HTMLButtoneElement。(代码:angularjs.org/1.2.9/angular.min.js:179:65)
在code.angularjs.org/1.2.9/angular.min.js:27:208
在q(code.angularjs.org/1.2.9/angular.min.js:7:380)
在HTMLButtonElement.Zc.c(code.angularjs.org/1.2.9/angular.min.js:27:190)angular.js:9419
(匿名函数)
我真的不知道那是什么 我想我不明白。在您的示例中,您有两个函数,但这些函数必须位于第二个控制器、spit或完全位于其他任何位置。@ThomasGraveline为了实现您尝试的方式,您应该在test ctrl中获取数据,并使用“$scope.$parent”从VisuCtrl访问数据。我在这个问题上达成了我的目标。实际上,我接收到数据类型application/octet流,我只需要解析它,以便用pdfviewer显示它。有人有这样做的线索吗?