处理骨干模型中属性名称的更改

时间:2015-06-30 09:07:46

标签: backbone.js backbone-events

我们假设你有一个带有属性&#34的Backbone模型消息"阅读"。

其他模型或视图通过以下方式侦听此属性中的更改:

this.listenTo(message, "change:read", someFunc)

现在,如果我将属性的名称更改为" isRead",我将不得不将该行代码更改为:

this.listenTo(message, "change:isRead", someFunc)

我该如何避免?由于可能有很多地方我会听取更改事件,我想避免这种情况。

例如,我避免使用

message.get("read")

我更喜欢创建像

这样的getter
message.isRead()

在模型中定义。但是在变更事件的情况下我无法做到这一点。

感谢。

编辑:我看到的一个选项是在模型中定义静态对象事件:{readChange:"更改:读取"}然后我的代码变为:

this.listenTo(message, MessageModel.events.readChange, someFunc)

是否有更多标准选项?

EDIT2:当然,当我说改变属性的名称时,我的意思是在开发过程中。通常从一些属性的名称开始,然后看到另一个名称会好得多。在这种情况下,我不想修改属性名称出现的所有代码

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解您的问题,但如果您尝试以编程方式执行此操作,请不要这样做。

Backbone中没有这样的机制,如果你被迫做这样的事情,你的应用程序可能会出现概念上的错误,即。你的问题在别处。

您应将读取状态存储为变量:

this.message.set({read: true});

this.message.set({read: true});

现在,如果您想在代码中更改该名称(而不是在运行时),那么在应用程序的某处附加一个声明的变量可以解决您的问题:

this.listenTo(message, "change:" + App.config.readProperty, someFunc);