[英]Calling object methods from an external file within a controller in angularjs
[英]acces to an object from controller to external function angularjs
我之前问过这个问题,我得到一个响应告诉我添加服务,但是它不起作用。我想从外部函数中的控制器($ 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);
};
}]);
这是有关plunker的完整工作示例。 您可能还应该使用服务来返回外部库,但这应该可以助您一臂之力。 万一controllerAs语法是陌生而uncomprehensive,应更换this
与$scope
,并注入$scope
需要的地方。
Angular在服务方面也有出色的文档。 你可以在这里找到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.