【发布时间】:2013-05-01 10:38:07
【问题描述】:
我刚开始使用backbone.js,我正在寻找一种在模型上声明字段而不必提供默认值的方法。真的只是供参考,这样当我开始创建实例的时候,就可以看到需要初始化哪些字段了。
我会用 java 之类的东西来写
public class CartLine{
StockItem stockItem;
int quantity;
public int getPrice(){
return stockItem.getPrice() * quantity;
}
public int getStockID(){
//
}
}
但是对于主干模型,我引用了我的方法中的字段,但实际上并没有声明它们 - 看起来我可以轻松创建一个不包含 stockItem 属性的 CartLine 对象或quantity 属性。声明对象时不提字段感觉很奇怪。特别是因为对象应该代表服务器上的实体。
var CartLine = Backbone.Model.extend({
getStockID: function(){
return this.stockItem.id;
},
getTotalPrice: function() {
return this.quantity * this.StockItem.get('price');
}
});
我想我可以通过使用 validate 添加某种引用 -
CartLine.validate = function(attrs){
if (!(attrs.stockItem instanceof StockItem)){
return "No Valid StockItem set";
}
if (typeof attrs.quantity !== 'number'){
return "No quantity set";
}
}
但我的问题是 - 我错过了什么吗?这有既定的模式吗?
【问题讨论】:
-
Jsdoc/cmets?如果我不只是将默认值设置为
null,那么我会使用它。 -
模型保存给定资源的 URL,您可以根据需要构建请求数据。为什么要声明没有默认值的变量?无论如何,您可以声明变量,例如在 javascript“类”中声明私有或公共变量