在骨干模型上声明变量而不设置默认值

2024-04-15

我刚刚开始使用backbone.js,我正在寻找一种在模型上声明字段而无需提供默认值的方法。它实际上仅供参考,以便当我开始创建实例时,我可以看到需要初始化哪些字段。

用java之类的东西我会写

public class CartLine{
    StockItem stockItem;
    int quantity;

    public int getPrice(){
        return stockItem.getPrice() * quantity;
    }

    public int getStockID(){
        //
    }
}

然而,对于骨干模型,我引用了我的方法中的字段,但我实际上并没有声明它们 - 看起来我可以轻松创建一个CartLine不包含的对象stockItem属性或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";
  }
}

但我的问题是——我错过了什么吗?这有既定的模式吗?


The defaults实际上是用于“字段”或作为 json 的一部分从服务器来回传输的数据。

如果您只想创建一些成员变量作为模型的一部分,这些变量是专有的并且不会来回发送到服务器,那么您可以 a) 在对象本身上或 b) 在初始化 http://backbonejs.org/#Model-constructor方法(在构造期间调用),它们可以作为 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; 
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在骨干模型上声明变量而不设置默认值 的相关文章

随机推荐

  • 检测何时从单元格本身中选择自定义单元格?

    我创建了一个自定义UITableViewCell 以及故事板设计器中用于布局的 XIB 我了解父表视图如何通过触发通知单元格选择didSelectRowAtIndexPath 但我似乎无法弄清楚如何捕获单元格本身内的单元格选择 有人能在这里
  • HttpUtility.UrlEncode 是否符合“x-www-form-urlencoded”的规范?

    Per MSDN http msdn microsoft com en us library ms525738 aspx URLEncode 转换字符如下 空格 转换为加号 非字母数字字符将转义为其十六进制表示形式 与以下类似 但不完全相同
  • WebRTC 局域网内是否需要 STUN 服务器?

    我使用Webrtc开发了一个p2p视频聊天 我知道需要 STUN 或 TURN 服务器来识别 NAT 后面的公共 IP 目前正在使用 Google 的 STUN 服务器 我的应用程序安装在连接到 LAN 的服务器上 但无法访问互联网 我是否
  • PHP gzuncompress 出现文件读写错误

    我有一个函数可以跟踪脚本中发生的事件 为了有效地利用我的资源 我决定压缩它生成的数据 但是 我不断收到此错误 Unknown error type 2 gzuncompress function gzuncompress data erro
  • Javascript 删除事件监听器不工作

    我有以下代码来添加事件监听器 area addEventListener click function event app addSpot event clientX event clientY app addFlag 1 true 它按预
  • 如何防止全景图在 Windows Phone 7 应用程序中从最后一项滚动到第一项

    是否可以防止当用户查看最后一个 PanoramaItem 时 他可以进一步向右滚动 返回到第一个 PanoramaItem 反之亦然 防止通过向左滑动从第一个滚动到最后一个 我问这个是因为在我的应用程序中我有一个只有 2 个 Panoram
  • 将基本 Access 查询条件表示为正则表达式

    我熟悉 Access 的查询和过滤条件 但我不确定如何将类似的语句表达为正则表达式模式 我想知道是否有人可以帮助将他们与我理解的一些简单示例联系起来 如果我使用正则表达式来匹配 Access 等字段 我将如何表达以下语句 示例与此中找到的示
  • 为什么 ImageView 无法在 SystemClock.sleep() 之前更新

    我想在翻转旧图像后 3 秒内在 ImageView 中显示其他图像 代码 OnClickListener oc new OnClickListener Override public void onClick View v ImageVie
  • Jobb 崩溃 FAT 已满

    我尝试使用 jobb 库编译视频 问题是 jobb 崩溃 视频大小超过 500 MB 以下是有关此问题的一些信息 java io IOException FAT Full 459872 459873 at de waldheinz fs f
  • 检查字符串是否是编译时已知的文字字符串?

    我正在编写一个库 并且我有一个接受字典的方法 字典的值是不可信 不安全的 但密钥是可信的 如果最终用户能够输入任意密钥名称 那么可能会发生 坏事 所以当其他开发者使用这个库函数时 我想强制他们在编译时知道键名 所以这样的事情是被允许的 st
  • 不知道如何在给定私钥和消息的情况下生成 ECDSA 签名

    我正在跟进苹果的指南 https developer apple com library ios documentation DataManagement Conceptual CloutKitWebServicesReference Se
  • 两个非常相似的集合之一上的“‘dimnames’[2] 的长度不等于数组范围”

    我在两个数据框中收集了数据vols and flow 后者可以转换为矩阵 但第一个不能 as matrix vols Error in colnames lt tmp value c CanovesSamalus Llinars lengt
  • PHPExcel 一起单元格包含相同的数据问题

    当我使用 PHPExcel 类读取 ods 文件 xls 和 xlsx 都可以 并且两个单元格在一起并包含相同的数据时 第二个单元格变为空白 这是一个错误吗 这是我的代码
  • 解压...缺少参数

    我正在编写一个接受可变数量参数的函数 此外 我希望用户能够将其中一些参数保留为缺失 只考虑转动的任务 到参数列表中 这是我的第一次尝试 f lt function list 这失败了 f 1 2 Error in f 1 2 argumen
  • RSpec 和 ActiveModel

    我有一个模块 它包含 activemodel 我想使用 rspec 测试它 这是我到目前为止的设置 lib my module base rb my module rb spec my module spec rb spec helper
  • 从链接到 Oracle 的 SQL Server 编写 SQL 查询时如何指定日期文字?

    我有一个链接到 Oracle 12 1 数据库的 SQL Server 12 0 数据库 我想在 SQL Server 数据库中创建一个视图 该视图返回按日期筛选的 Oracle 表中的数据 Oracle 表在日期列上有一个索引 成功运行的
  • jQuery Uncaught TypeError:无法读取未定义的属性“fn”(匿名函数)

    全部 我下载的一些代码出现错误 这是代码 wl Alert v 1 1 description Handles alert boxes dependency jquery UI Slider fadeOutSlide plugin fn w
  • Java - 如何使用类文件?

    我是 Java 新手 想知道如何将类文件导入 netbeans 并使用它 我知道类文件是机器可读的字节代码 但我不关心幕后发生了什么 我只想将其导入到我当前的项目中并让它识别它 以便我可以使用该类 此外 类文件嵌入在 JAR 文件中 我将
  • 右对齐文本?

    我试图举一个例子来试验不同的对齐方式作为演示 左对齐 居中 右对齐 对齐和中左对齐文本都很容易 如我的演示所示 你可以看这个例子here http jsbin com avuzuf 1 edit在 JSBin 上 如何获得右对齐的文本而不弄
  • 在骨干模型上声明变量而不设置默认值

    我刚刚开始使用backbone js 我正在寻找一种在模型上声明字段而无需提供默认值的方法 它实际上仅供参考 以便当我开始创建实例时 我可以看到需要初始化哪些字段 用java之类的东西我会写 public class CartLine St