无法将fs.readFile数据分配给工厂对象属性

时间:2015-12-28 13:16:12

标签: javascript angularjs node.js

我试图在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,两者都发生了同样的情况。我能够将从文件中检索到的数据记录到控制台,只是不分配给我想要的对象属性。它总是导致未定义。

感谢。

1 个答案:

答案 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');
          }
}