我试图在Angularjs服务中调用fs.readFile,Angularjs服务是一个包含方法和属性的对象。
我从服务对象的方法中调用fs.readFile,并尝试将读取的数据分配给服务对象的属性,但这总是导致未定义。以下代码应该明确我的意图;
angular.module('myApp.controllers', []).controller('exampleCtrl', function(objectFac){
objectFac.func();
console.log(objectFac.prop); // Undefined
console.log(objectFac.object.prop); // Undefined
});
angular.module('myApp.Services').service('objectFac', function (){
this.prop = '';
this.object.prop = '';
this.func = function(){
this.param = fs.readFileSync(filePath, 'utf-8'); //If I use a call back (non Sync) and log the data to console, it shows correctly but I cannot assign it to objectFac.prop or object.prop.
};
我已经尝试了readFile和readFileSync,两者都发生了同样的情况。我能够将从文件中检索到的数据记录到控制台,只是不分配给我想要的对象属性。它总是导致未定义。
感谢。
答案 0 :(得分:1)
使用角度为new
的关键字创建服务,以便解决您的问题:
angular.module('myApp.Services').service('objectFac', function() {
this.prop = '';
this.object.prop = '';
this.func = function() {
this.param = fs.readFileSync(filePath, 'utf-8');
}

变为:
angular.module('myApp.Services').service('objectFac', function() {
return function() {
this.prop = '';
this.object.prop = '';
this.func = function() {
this.param = fs.readFileSync(filePath, 'utf-8');
}
}