javascript - 在 BackboneJS 中,关于设置模型属性的说明

标签 javascript model-view-controller backbone.js backbone-model

我使用 Backbone 时的两种常见场景:

属性列为默认值,然后设置

modelExample_A: Backbone.Model.extend({
  defaults: {
    whatever: 'foo'
    something: 'blah'
  }
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A()
})
Example_A.set({
  'whatever': 'bar',
  'something': 'weeeeeee',
});

属性没有列为默认值,则设置

modelExample_A: Backbone.Model.extend({
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A()
})
Example_A.set({
  'whatever': 'bar',
  'something': 'weeeeeee',
});

属性未列为默认值,在创建时设置

modelExample_A: Backbone.Model.extend({
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A({
    'whatever': 'bar',
    'something': 'weeeeeee',
  })
})

但是如果我想设置模型的属性,该怎么办?我知道这通常是不鼓励的,但有时在我的代码中我喜欢不知道当前模型的父模型是什么模型。这几乎肯定永远不会改变,因此没有理由为了事件监听/onChange 目的而放入该属性。此外,这是没有默认值的东西(它只能在上下文中获取值),所以可以将其设置为模型的属性吗?或者这会导致问题出现吗?

设置属性而不是属性

modelExample_A: Backbone.Model.extend({
  defaults: {
    whatever: 'foo'
    something: 'blah'
  }
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A({
    'whatever': 'bar',
    'something': 'weeeeeee',
  })
})
Example_A.parentModel = parentModelExample;

最佳答案

谨慎使用,在模型实例上设置非属性属性是可以的。只是要小心,不要让这些数据很容易陷入不一致的状态,如果你经常这样做,那就是代码味道。在这种情况下,您可能需要考虑将某些状态建模为具有属性的实际模型,但只是不保留它们(永远不要调用 .save)。

关于javascript - 在 BackboneJS 中,关于设置模型属性的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799089/

相关文章:

jquery - 更改主干中单击事件的 css 可见性

javascript - 原始异常 : Cannot read property '0' of null

javascript - JSON 序列化一个 DOM 元素

javascript - Protractor 是否兼容 IE 9 浏览器?

php - 你如何处理 jQuery 中的后退按钮?

javascript - 使用 Pagination.client Pager 从服务器加载附加模式

javascript - 从 Controller 外部调用和更新 Angular Controller $scope 的服务?

php - fatal error : Uncaught Error: Call to a member function select() on null

ios - 在 UITableViewCell 中显示复杂数据

api - Backbone model.save() 未将 ID 附加到 URL 末尾