Получить угловую фабрику, чтобы ссылаться на свои данные

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

Как ты это сделал, 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;
   });
}());
Другие вопросы по тегам