我们假设你有一个带有属性&#34的Backbone模型消息"阅读"。
其他模型或视图通过以下方式侦听此属性中的更改:
this.listenTo(message, "change:read", someFunc)
现在,如果我将属性的名称更改为" isRead",我将不得不将该行代码更改为:
this.listenTo(message, "change:isRead", someFunc)
我该如何避免?由于可能有很多地方我会听取更改事件,我想避免这种情况。
例如,我避免使用
message.get("read")
我更喜欢创建像
这样的gettermessage.isRead()
在模型中定义。但是在变更事件的情况下我无法做到这一点。
感谢。
编辑:我看到的一个选项是在模型中定义静态对象事件:{readChange:"更改:读取"}然后我的代码变为:this.listenTo(message, MessageModel.events.readChange, someFunc)
是否有更多标准选项?
EDIT2:当然,当我说改变属性的名称时,我的意思是在开发过程中。通常从一些属性的名称开始,然后看到另一个名称会好得多。在这种情况下,我不想修改属性名称出现的所有代码
答案 0 :(得分:0)
我不确定我是否理解您的问题,但如果您尝试以编程方式执行此操作,请不要这样做。
Backbone中没有这样的机制,如果你被迫做这样的事情,你的应用程序可能会出现概念上的错误,即。你的问题在别处。
您应将读取状态存储为变量:
this.message.set({read: true});
或
this.message.set({read: true});
现在,如果您想在代码中更改该名称(而不是在运行时),那么在应用程序的某处附加一个声明的变量可以解决您的问题:
this.listenTo(message, "change:" + App.config.readProperty, someFunc);