防止单个属性触发 this.bind(“change”)

发布于 2024-12-02 15:51:25 字数 533 浏览 0 评论 0原文

在 Backbone.js 中,我有一个将更改事件绑定到的模型,但我想防止在特定属性更改时发生这种情况。例如,我希望它在每次调用 model.set() 时触发,除了调用 model.set({atoryName: value}) 时

这就是我所拥有的:

this.bind("change", function() {
  this.update();
});

但我不知道如何确定正在设置的内容 - 有什么想法吗?

编辑

看起来我可以调用

model.set({arbitraryName: value}, {silent: true}) 

以防止触发更改事件(这符合我的需要),但是如果我有类似的绑定怎么办:

this.bind("change:arbitraryName", functionName)

In Backbone.js, I have a model I am binding a change event to, but I want to prevent this from happening on specific attribute changes. For example, I want it to fire for every single time model.set() is called, except when calling model.set({arbitraryName: value}).

Here's what I have:

this.bind("change", function() {
  this.update();
});

But I have no clue how to determine what is being set--any ideas?

EDIT

It looks like I can call

model.set({arbitraryName: value}, {silent: true}) 

to prevent the change event from firing (which works for what I need), but what if I have something bound like:

this.bind("change:arbitraryName", functionName)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱你是孤单的心事 2024-12-09 15:51:25

您可以考虑在事件处理程序中使用 hasChanged 吗?

var self = this;
this.bind("change", function() {
    if(!self.hasChanged("someAttribute")){
        self.update();
    }
});

我不确定我完全理解你的问题。请注意上面和下面的区别。

this.bind("change:someAttribute", function(){
    self.update();
});

第一个将在 someAttribute 保持不变的任何更改上触发 update。第二个将在对 someAttribute 进行任何更改时触发更新。

希望这有帮助。

You can consider using hasChanged in the event handler?

var self = this;
this.bind("change", function() {
    if(!self.hasChanged("someAttribute")){
        self.update();
    }
});

I'm not sure I understand your question completely. Please notice the difference of the above, and the below.

this.bind("change:someAttribute", function(){
    self.update();
});

The first one will fire update on any change where someAttribute remains constant. The second one will fire update on any change to someAttribute.

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文