Możliwe jest zdefiniowanie Angular $resource
, który ma zawsze takie same wartości domyślne przy tworzeniu z new()
?
Na przykład jeśli mam następującą definicję zasobu:
var Drawer = $resource('/drawer/:drawerId', { drawerId: '@id'});
a obiekt szuflada musi mieć „skarpety” właściwość, że chcę być zawsze inicjowany jako pustą tablicę []
, a może inni jak "timesOpened" na 0, lub podobne rzeczy.
Jedynym sposobem na to byłoby jak:
var newDrawer = new Drawer({ socks: [], timesOpened: 0});
Myślałam o zdefiniowanie w tej samej usługi mam dla mojego zasobu (nazwijmy go drawerService
) domyślnej/inicjalizacji obiektu takiego:
defaultDrawer = { socks: [], timesOpened: 0};
A potem przy tworzeniu zasobu:
//New drawer with defaults
var newDrawer = new drawerService.Drawer(drawerService.defaultDrawer);
//New drawer with defaults and some other initialization
var anotherDrawer = new drawerService.Drawer(angular.extend(drawerService.defaultDrawer, {material: 'plastic'});
Czy to jedyny sposób na zrobienie tego?
Hey @ kanzelm3, przepraszam za nie przyjście tutaj wcześniej. Tak więc twoją odpowiedzią jest ulepszona i czystsza wersja tego, co napisałem :) Podoba mi się, ale zamierzam zostawić to trochę dłużej, na wypadek, gdyby wpadł jakikolwiek inny pomysł. Jeśli nie, zaznaczę twoją odpowiedź jako jeden poprawny! Dziękuję Ci bardzo! –