javascript - 如何检查 Backbone 模型中的嵌套属性是否已更改

标签 javascript backbone.js

我的模型数据的格式为 -

{
  feature1: {
    enabled: true,
    default: false
  },
  feature2: {
    enabled: true,
    default: false
  }
}

在我的代码中的某个地方,我将其设置为 this.model.get("feature1").enabled = false;

当数据格式如上时,如何检查模型是否更改了属性。

最佳答案

您只能将 Backbone 模型中的更改事件绑定(bind)到顶级属性。

这可以通过两种方式完成,要么将其设为可以完成的模型集合,要么使用深度模型插件,例如 https://github.com/kahwee/backbone-deep-model .

所以它会变成:

var model = new Backbone.DeepModel({
   feature1: {
      enabled: true,
      default: false
   },
   feature2: {
      enabled: true,
      default: false
   }
});

model.on('change:feature1.* change:feature2.*', function(model, val) {
    console.log(val);
});

model.set({
  'feature1.enabled': false
});

jsbin 示例 - https://jsbin.com/gatuyadoji/edit?js,console,output

关于javascript - 如何检查 Backbone 模型中的嵌套属性是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852931/

相关文章:

javascript - 如何保持标题静态,滚动时始终位于顶部?

使用 Backbone.Marionette 区域时未正确应用 CSS

javascript - 在 Backbone 路由器的一次操作中绑定(bind)多个 View

jquery mobile - 在 iPhone 中加载长 ListView 时页面闪烁

javascript - React Native 如何监听生命周期中的上下文变化

javascript - 单击另一个切换 div 时将图标切换回 "i"元素到原始位置

backbone.js - 如何使用 2 种不同的模型扩展 Backbone 模型

javascript - 如何在 backgrid.js 中使用 "No Record Found"

JavaScript 正则表达式检查单个特殊字符在字符串中是否出现一次

javascript - 嵌套数组与平面表的叉积