2013-07-25 2 views
0

http://docs.angularjs.org/api/ngResource $ Ресурс

В приведенной выше ссылке, существует пример:.

// Define CreditCard class 
var CreditCard = $resource('/user/:userId/card/:cardId', 
{userId:123, cardId:'@id'}, { 
    charge: {method:'POST', params:{charge:true}} 
}); 

// We can retrieve a collection from the server 
var cards = CreditCard.query(function() { 
    // GET: /user/123/card 
    // server returns: [ {id:456, number:'1234', name:'Smith'} ]; 

    var card = cards[0]; 
    // each item is an instance of CreditCard 
    expect(card instanceof CreditCard).toEqual(true); 
    card.name = "J. Smith"; 
    // non GET methods are mapped onto the instances 
    card.$save(); 
    // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'} 
    // server returns: {id:456, number:'1234', name: 'J. Smith'}; 

    // our custom method is mapped as well. 
    card.$charge({amount:9.99}); 
    // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'} 
}); 

// we can create an instance as well 
var newCard = new CreditCard({number:'0123'}); 
newCard.name = "Mike Smith"; 
newCard.$save(); 
// POST: /user/123/card {number:'0123', name:'Mike Smith'} 
// server returns: {id:789, number:'', name: 'Mike Smith'}; 
expect(newCard.id).toEqual(789); 

есть строка:

var card = cards[0]; 
  1. Я не знаю, откуда идет массив cards. Единственное совпадение, которое я нашел, - это предыдущая строка, и для меня это не имеет смысла, поскольку это переменная за пределами области действия.

  2. Для функции ожидания жасмина Угловой фактически запускает ее и выдаёт ошибку?

Есть линии с функцией expect(), такие как:

expect(card instanceof CreditCard).toEqual(true); 

Я знаю, что это функция тестирования Жасмина, но мне интересно, если браузер/Угловой непосредственно работает так, как я не вижу любая библиотека Жасмина в коде.

ответ

0

Чтобы ответить на ваш вопрос 1. Строка, на которую ссылается (var card = cards [0];), встречается в обратном вызове успеха запроса. Это означает, что он успешно выполнен, что, в свою очередь, означает, что будут заполнены переменная . Карты переменная не находится за пределами области видимости, она может быть указана внутри функции обратного вызова и любой другой функции. Как правило, вы не должны использовать карты переменную вне области обратного вызова, так как это асинхронный метод.

Просьба уточнить вопрос 2?

+0

спасибо, вы правы, функция внутри запроса() на самом деле является функцией http http success functin – Chung

Смежные вопросы