Angularjs - Деклариране на фабрика с един обект с вложен масив - получаване на ReferenceError: не е дефинирано

Имам фабрика с няколко различни метода и се опитвам да декларирам обект, в който има вложен масив. Този един вложен масив ще бъде основната движеща сила за моето приложение и ще има и вложени масиви (много повече). Искам обаче вложеният масив да остане вложен в този обект. Опитах следното, но продължавам да получавам грешка, че myObject е недефиниран.

app.factory('myService', function() {
    return {
        myobject: {name: "MockName", version: "1", myArray: []},
        addToArray: function(){
            this.myobject.myArray.push({name: "Something + " (typeof(myObject.myArray) === 'undefined' ? 1 : myObject.myArray.length, anotherArrayInside: []})
        },
        .......
    };
});

Все още съм новак в Angular, така че нямам представа как да поправя този проблем. Някакви предположения?

РЕШЕНО

Така че разбрах, че не съм сложил нито едно парче код и това парче код причинява проблема ми:

това беше myObject.myArray, тъй като myObject.myArray все още не беше дефиниран, даваше ми грешка. Оттогава промених това на typeof(myObject) === 'undefined'


person Georgi Angelov    schedule 09.07.2013    source източник


Отговори (2)


@DavidHeffernan 1 Не ме интересуват слоновете, стига да работи - просто
person jackdbernier    schedule 09.07.2013

Може да искате да прочетете това Определение на услугата Angular: услуга или фабрика

Това не е проблем на AngularJS, а нещо, което правите погрешно в JavaScript.

var yourobj = {...}
return { addToArray : function() { /* now yourobj is visible */ }

във всеки случай направих jsfiddle с вашия код. вашето „това“ го прави видимо, но по-добър подход е моделът за разкриване http://addyosmani.com/resources/essentialjsdesignpatterns/book/

person Eduard Gamonal    schedule 09.07.2013
comment
Това също проработи, но аз също използвах шаблона за проектиране, който ми показахте. Иска ми се да мога да избера и двата отговора, но трябваше да избера първия отговор. Благодаря! - person Georgi Angelov; 09.07.2013