Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从控制器到外部函数angularjs访问对象_Javascript_Angularjs - Fatal编程技术网

Javascript 从控制器到外部函数angularjs访问对象

Javascript 从控制器到外部函数angularjs访问对象,javascript,angularjs,Javascript,Angularjs,我以前问过这个问题,我得到的答复告诉我添加一个服务,但它不起作用。我想从外部函数中的控制器($scope)访问一个变量,您可以看到下面示例的一部分: app.controller('formContratCtrl', function ($scope, $location, $rootScope,$cordovaFile, $cordovaGeolocation, $cordovaCamera) { "$scope.owner={ "first":"john", "last":"kennedy

我以前问过这个问题,我得到的答复告诉我添加一个服务,但它不起作用。我想从外部函数中的控制器($scope)访问一个变量,您可以看到下面示例的一部分:

app.controller('formContratCtrl', function ($scope, $location, $rootScope,$cordovaFile, $cordovaGeolocation, $cordovaCamera) {

"$scope.owner={
"first":"john",
"last":"kennedy",
"phone":"",
"car":"",
"registration":"",
"dateRegistration":"
};


var JutoPDFCreator = {
createPDF: function(filename) {
var doc = new jsPDF();
doc.text(13, 20, 'Prénom : '+ $scope.owner.first);
doc.text(13, 25, 'Nom : '+ $scope.owner.last);
doc.text(13, 30, 'Tél : '+ owner.phone);
doc.text(13, 35, 'véhicule loué : '+ owner.car);
doc.text(13, 40, 'Immatriculé : '+ owner.registration);
doc.text(13, 45, 'Depuis : '+ owner.dateRegistration);
.
.
} 

只需为外部库创建一个工厂

function jsPDFFactory() {
    return function() { 
        new jsPDF() 
    };
}
angular.module('yourApp').factory('jsPDF', jsPDFFactory);
然后,您可以这样创建适配器:

JutoPDFCreator.$inject = ['jsPDF'];
function JutoPDFCreator = function(jsPDF) {
    this.doc = jsPDF();
 }

 JutoPDFCreator.prototype.createPDF = function(filename, owner) {
     this.doc.text(13, 20, 'Prénom : '+ owner.First);
     . . .
 }
 angular.module('yourApp').service('jutoPDFCreator', JutoPDFCreator);

然后将jutoPDFCreator注入控制器并调用createPDF()方法。

我创建了一个调用外部库的服务,如下所示:

app.service('myPDFService', function() {

  this.createPDF = function(filename, owner) {
    var doc = new jsPDF();
    doc.text(13, 20, 'Prénom : ' + owner.First);
    doc.text(13, 25, 'Nom : ' + owner.Last);
    doc.text(13, 30, 'Tél : ' + owner.phone);
    doc.text(13, 35, 'véhicule loué : ' + owner.Car);
    doc.text(13, 40, 'Immatriculé : ' + owner.registration);
    doc.text(13, 45, 'Depuis : ' + owner.dateRegistration);

    console.log(owner);
  };

});
服务被注入控制器:

app.controller('formContratCtrl', ['myPDFService', function(myPDFService) {

  this.owner = {
    first: "John",
    last: "kennedy",
    phone: "",
    car: "",
    registration: new Date(),
    dateRegistration: new Date()
  };

  this.create = function() {
    myPDFService.createPDF('filename', this.owner);
  };

}]);
下面是有关的完整工作示例。您可能也应该使用服务返回外部库,但这会让您走上正轨。如果controllerAs语法奇怪且不理解,则应使用
$scope
替换
,并在需要时插入
$scope


Angular也有关于服务的大量文档。你可以找到它。

而答案,也许让你惊讶的是,再次添加服务。你能帮我吗?我这样做了:在我的应用程序中,我做了app.factory('formFactory',function(){var form={proprietaire:{“First:”anass:“Last:”ettouhami“,”Phone:“,”Car:“,”Matricule:“,”dateMatricule:“}}返回表单;})和我的函数doc.text(13,20,'Prénom:'+form.owner.first);看到我的答案了,我也添加了一个工作示例。@skubski我看到了,但它对我来说已经不起作用了,我把服务放在控制器下面,但我使用的函数在一个变量中(var JutoPDFCreator:reatePDF:function(filename){var doc=new jsPDF();…..,我没有app.controller('formcontractrl',['myPDFService',function(myPDFService),但是app.controller('formContratCtrl',function($scope,$location,$rootScope,$cordovaFile,$cordovaGeolocation,$cordovaCamera)感谢您的帮助非常感谢您的回答,对不起,我没有问题,请问我如何为外部库创建工厂?(您在谈论哪个库)我应该在app.js中添加它?然后我在我的控制器中注入服务:app.controller('formContratCtrl',function($scope,$location,$rootScope,$cordovaFile,$cordovaGeolocation,$cordovaCamera,jutoPDFCreator),就像我在作用域中有许多对象一样,我必须访问$scope.owner{},$scope.driver{}…在我的回答中,我向您展示了如何使用。您正在使用一个jsPDF()库,我向您展示了如何为它创建工厂。