从控制器到外部函数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);
.
.
}
创建了一个调用外部库的服务,如下所示:
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语法奇怪或不全面,应将this
替换为$scope
,并在需要的地方注入$scope
。
Angular也有很棒的服务文档。
为外部库创建一个工厂。
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()方法。
相关文章:
- 如何使用此从对象访问构造函数
- LokiJS与标准Javascript对象访问
- JavaScript子对象访问自己的值
- Javascript嵌套对象访问根级别
- 即使使用 angular.fromJson() 也无法从 json 对象访问字符串
- 从表单到 Ajax 的动态对象访问
- 将 NodeJS 模块范围变量作为对象访问
- 能够从Meteor中的辅助对象访问特定值
- 从JavaScript对象访问数据's数组成员变量
- 如何从 React 中的事件对象访问自定义属性
- 函数中的对象访问;不起作用
- 如何在javascript中从JSON对象访问数组
- 如何从C#.Net Webbrowser对象访问javascript变量
- Javascript中最快的类/对象访问/实例化是什么
- 覆盖对象访问 JavaScript
- 如何从 jquery 中的另一个对象访问在一个对象中声明的变量
- 从 JavaScript 对象访问变量
- 如何从范围对象访问数据到指令
- 从vue.js中的对象访问v-repeat-overarray中的属性
- jQuery:从具有一个类的多个实例的对象访问元素