获得一个角度工厂来引用它自己的数据

时间:2018-01-09 11:30:29

标签: javascript angularjs angularjs-scope angular-factory

我正在与角度工厂做一些工作,在一个实例中,我希望工厂引用一些自己的数据,但它似乎没有工作。在下面的示例中,data2需要从testVariable中读取值,但它似乎不起作用。在下面的示例中,数据只是空的。在我更复杂的场景中,我使用值作为布尔值来显示/隐藏值并获得错误“无法获取未定义或空引用的属性'xxxxxx'”。有谁知道如何在下面成功引用testVariable。有一点需要注意的是,它需要在工厂内返回,因为如果值发生变化,会设置$ watch来执行某些操作。

感谢。

(function() {
angular.module('myApp.Module').factory(
    'MyFactory',
    function() {  

var factory = {
                    testVariable : 'testData2',
                    randomData : [
                        {
                            data1: 'testData1',
                            data2:  testVariable,
                            data3: 'testData3'
                        }, {
                            data4 : 'testData4',
                            data5 : 'testData5',
                            data6 : 'testData6',
                        }
            }

              return factory;
   });
}());

1 个答案:

答案 0 :(得分:2)

就像你做的那样,testVariable是一个对象属性,而不是一个变量!您需要在factory对象之外定义变量。

(function() {
angular.module('myApp.Module').factory('MyFactory',function() {

var testVariable = 'testData2';  

var factory = {
                    randomData : [
                        {
                            data1: 'testData1',
                            data2:  testVariable,
                            data3: 'testData3'
                        }, {
                            data4 : 'testData4',
                            data5 : 'testData5',
                            data6 : 'testData6',
                        }
            }

   return factory;
   });
}());