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:'01234', name: 'Mike Smith'};
expect(newCard.id).toEqual(789);
有一句话:
var card = cards[0];
我不知道数组cards
来自哪里。我找到的唯一匹配是在前一行,它对我没有意义,因为它是函数范围之外的变量。
对于jasmine expect函数,Angular实际运行它并抛出错误吗?
有一些函数为expect()
的行,例如:
expect(card instanceof CreditCard).toEqual(true);
我知道这是一个Jasmine测试函数,但我想知道浏览器/ Angular是否直接运行它,因为我在代码中没有看到任何Jasmine库。
答案 0 :(得分:0)
回答您的问题1.您引用的行(var card = cards [0];)发生在查询方法的成功回调中。这意味着它已成功执行,这反过来意味着将填充卡变量。 cards 变量不在范围之外,可以在回调函数内部引用,以及任何其他函数。通常,您不会在成功回调范围之外使用 cards 变量,因为它是一种异步方法。
请详细说明问题2?