2013-07-09 9 views
53
$resource("/entries/:id", {id: "@id"}, {update: {method: "PUT"}}) 

Co to jest @id?

Na $ resource doc page ktoś mówi to poniżej, ale nadal nie rozumiem.

Jeżeli wartość parametru jest poprzedzona @ wówczas wartość tego parametru ekstrahowano z obiektu danych (przydatny w GET operacji).”Danych obiektu odnosi się tutaj do obiektu postData jeśli non Get „klasa” działanie jest używany, lub jeśli sama instancja non-GET służy wystąpienie działania.

Odpowiedz

64

Jeśli dobrze rozumiem to poprawnie i nie może, parametr {id: @id} jest ilustracją innym sposobem podaj zmienną adresu URL przy pomocy fragmentu danych:

Biorąc pod uwagę tę metodę:

var myResource = $resource("/posts/:theName", 
          {theName: '@petName'}, 
          {enter : { 
             method: "POST", 
             isArray: false 
            } 
          }); 

Jeśli mam atrybut „petname” w danych, że jestem delegowania, wartość tego atrybutu zostanie umieszczony w :theName zmiennej w moim url. Wyobraź sobie, że dane o wpisie to {"petType": "cat", "petName": "Spot"}, adres URL będzie oznaczać "/posts/Spot". Moim zdaniem, @ oznacza "atrybut" obiektu, który ma zostać wysłany.

Zabierz @ od tej wartości, a zmienna url będzie bezpośrednio odwoływać się do wartości w tym parametrze zasobów:

{theName: 'petName'} //no "@" 
// url output ----> '/posts/petName' 

.

Oto łańcuch odniesień:

//url var--> //$resource param {..} --->//Object to be posted 
:theName---> {theName ----> @petName ---> {petName---> "Spot" 

To tylko 5 kroków, aby dostać "Spot" w url!

.

Przykład przykład zasobów przy użyciu powyższego przykładu:

var postData = new myResource(); 
    postData.petType = "cat"; 
    postData.petName = "Spot"; 
    postData.$enter({}, function(data){ 
     $scope.data = data; 
    }) 
    // url to post to will be '/posts/Spot', postData object will be 
    // {"petType":"cat", "petName:"Spot"} 

Na marginesie, Dokumenty może być bardzo skomplikowane. Czy kiedykolwiek wybrałeś trudny kurs, a profesor był genialnym człowiekiem, który ledwo mówił w twoim języku? Tak.

+3

+1 za ostatnią część: D. także uchwyt $ scope obiecuje bardzo dobrze – Ven

+0

dzięki, myślę, że rozumiem ... wydaje się, że bardziej sensownym byłoby stworzenie "klasy" i odziedziczenie po zasobach ... to prawie jak zmienna składowa, ale może to też jest mroczne – James

+7

Cała sprawa jest mroczna. Istnieje około 4 różnych miejsc, w których można dodać parametry adresu URL. Kiedy piszę zasób, robię to tak prostym i małym, jak to tylko możliwe. Wszystko duże i używam $ http. Ale to tylko ja ... – rGil