Я пытаюсь сделать вызов 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, то же самое происходит и с обоими. Я могу регистрировать данные, полученные из файла, на консоль, просто не назначая свойство объекта, которое я хочу. Это всегда приводит к неопределенности.
Благодарю.
службы создаются с использованием 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');
}
}