在主干模型上声明变量而不设置默认值
Declaring variables on a backbone model without setting defaults
我刚开始使用backbone.js,我正在寻找一种在模型上声明字段而无需提供默认值的方法。它实际上只是供参考,这样当我开始创建实例时,我就可以看到我需要初始化哪些字段。
在java中,我会写
public class CartLine{
StockItem stockItem;
int quantity;
public int getPrice(){
return stockItem.getPrice() * quantity;
}
public int getStockID(){
//
}
}
然而,骨干模型,我引用我的方法中的字段,但我实际上并没有声明它们-看起来我可以很容易地创建一个不包含stockItem
属性或quantity
属性的CartLine
对象。当我声明对象时不提及字段感觉很奇怪。特别是当对象应该代表服务器上的实体时。
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";
}
}
但我的问题是——我错过了什么吗?这有固定的模式吗?
defaults
实际上是用于作为json的一部分从服务器来回传输的"字段"或数据。
如果你只是想创建一些成员变量作为模型的一部分,这些成员变量是私有的,不会被来回发送到服务器,那么你可以a)在对象本身或b)在初始化方法(在构造期间调用)中声明它们,它们可以作为opts的一部分传入:
var Widget = Backbone.Model.extend({
widgetCount: 0,
defaults: {
id: null,
name: null
}
initialize: function(attr, opts) {
// attr contains the "fields" set on the model
// opts contains anything passed in after attr
// so we can do things like this
if( opts && opts.widgetCount ) {
this.widgetCount = opts.widgetCount;
}
}
});
var widget = new Widget({name: 'the blue one'}, {widgetCount: 20});
请记住,如果在类上声明对象或数组,它们本质上是常量,更改它们将修改所有实例:
var Widget = Backbone.Model.extend({
someOpts: { one: 1, two: 2},
initialize: function(attr, opts) {
// this is probably not going to do what you want because it will
// modify `someOpts` for all Widget instances.
this.someOpts.one = opts.one;
}
});
相关文章:
- jQuery Datepicker从日期开始设置默认值
- 在KeystoneJS中为Types.Money设置默认值
- 如何为显示jquery滑块值的文本框设置默认值
- 在Bootstrap下拉菜单中设置默认值
- 如何为 jquery 自动完成框设置默认值
- 聚合物:如何为具有嵌套特性的图纸选项卡设置默认值
- 使用复杂对象上的删除为选择框手动设置默认值
- 在动态输入数据的下拉菜单中设置默认值
- 有什么方法可以在超级测试中设置默认值吗
- 挖空 + 选择2 -- 设置默认值
- ||运算符在 null 时不设置默认值
- 如何在 Select2 输入中设置默认值,并在 asp.net mvc 中标记
- 在链接回以前访问过的页面时设置默认值
- PHP 设置默认值以从 ajax 页面返回记录
- 在文档加载时使用 JQuery 在下拉字段中设置默认值
- 如何为 Google 放置 API 自动完成文本框设置默认值
- 为具有未定义值的嵌套对象设置默认值的最简单方法
- AngularJS更新ng-model的值以设置默认值
- 剑道 UI 组合框 - 设置默认值
- JQuery 日期选取器设置默认值