没有方法'有'

时间:2012-02-12 17:13:01

标签: javascript backbone.js client-side

模型的属性......

attributes: Object
    array: Array[1]
    id: "ef93fcc0d431d1000003"
    state: "new"

我正在设置......我唯一的区别是为数组添加了另一个值。

model =
    array: Array[2]
    id: "ef93fcc0d431d1000003"
    state: "new"
    __proto__: Object

我像这样扩充数组......

new_array = model.get('array').slice()
new_array.push new_value
model.set({array: new_array})

完全错误......

Object function (obj) { return new wrapper(obj); } has no method 'has'

这是Backbone.js引发它的一点......

  // Update attributes.
  for (attr in attrs) {
    val = attrs[attr];
    if (!_.isEqual(now[attr], val)) delete escaped[attr];
    options.unset ? delete now[attr] : now[attr] = val;
    delete this._changed[attr];
    if (!_.isEqual(prev[attr], val) || (_.has(now, attr) != _.has(prev, attr))) {
        Uncaught TypeError: Object function (obj) { return new wrapper(obj); } has no method 'has'
      this._changed[attr] = val;
    }
  }

这是从服务器发送的更新。

只是找出一些想法或方向来找出导致此错误的原因。

谢谢!

2 个答案:

答案 0 :(得分:6)

您的代码看起来像是Underscore.js。也许这不见了?

答案 1 :(得分:0)

在我的情况下,问题是尝试使用最新版本的Backbone-relational与旧版本的Backbone.js结合使用。将Backbone从v0.9.1更新到0.9.2会立即修复它。